我有一个抽象的基类并继承了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
我们正在构建一个使用NH进行数据访问的ASP.NET MVC应用程序.使用NH Profiler我看到很多警告,例如"WARN:将代理缩小到Domain.CaseTask - 此操作中断==".在对每个子类的表中映射的类执行查询时,我经常得到这些,例如,使用NH Linq提供程序:
Query<ICaseTask>().Where(c => c.Assignee == Of || c.Operator == Of)
Run Code Online (Sandbox Code Playgroud)
CaseTask类从Task继承的地方,触发警告.
关于互联网上警告的信息很少,并且大多暗示这是可以忽略的......这个警告到底有什么警告?这应该是我应该寻求纠正的吗?