相关疑难解决方法(0)

每个子类继承策略使用NHibernate表时使用Casting代理的问题

我有一个抽象的基类并继承了poco实体.我使用表每子类继承与流畅的nhibernate 1.1自动化.

类继承如下所示

节点(抽象类)放置:节点资产:节点

Node类基本上是树结构.

 public abstract class Node 
    {
        public virtual int Id
        {
            get;
            set;
        }

        public virtual Node ParentNode
        {
            get;
            set;
        }

        public virtual ICollection<Node> ChildNodes
        {
            get;
            set;
        }
}
Run Code Online (Sandbox Code Playgroud)

现在的问题是,当我从数据库获取Asset的对象并执行objAsset.ParentNode时,我可以将ParentNode强制转换为Asset或Place,但是如果我执行类似objAsset.ParentNode.ParentNode.ParentNode的操作,那么ParentNode将显示为类型" {Castle.Proxies.NodeProxy}"我无法将其投射到Place或Asset.

我知道在我的情况下,最终结果应该是Place类型,因为记录存在于Place表的数据库中但由于某种原因NHibernate不能将它延迟加载到实际的派生类型,它只能转换为基类Node .

任何的想法?

等待Nabeel

nhibernate lazy-loading nhibernate-mapping fluent-nhibernate

11
推荐指数
1
解决办法
5201
查看次数