【发布时间】:2010-08-19 15:58:39
【问题描述】:
我有一个抽象基类和继承的 poco 实体。我使用流利的 nhibernate 1.1 自动映射的每个子类继承表。
类继承如下所示
节点(抽象类) 地点:节点 资产:节点
节点类基本上是一个树形结构。
public abstract class Node
{
public virtual int Id
{
get;
set;
}
public virtual Node ParentNode
{
get;
set;
}
public virtual ICollection<Node> ChildNodes
{
get;
set;
}
}
现在的问题是当我从数据库中获取 Asset 对象并执行 objAsset.ParentNode,我可以将 ParentNode 转换为 Asset 或 Place,但是如果我执行 objAsset.ParentNode.ParentNode.ParentNode 之类的操作,则 ParentNode 将显示为“{Castle.Proxies.NodeProxy}”类型,我无法转换它放置或资产。
我知道在我的情况下,最终结果应该是 Place 类型,因为记录存在于 Place 表中的数据库中,但由于某种原因 NHibernate 不能将其延迟加载到实际的派生类型,它只能转换为基类节点。
有什么想法吗?
等待 纳比尔
【问题讨论】:
标签: nhibernate fluent-nhibernate nhibernate-mapping lazy-loading