我有一个按层次结构设置的表(下面是我的域对象)。问题是在处理任何返回的 nhibernate 对象时,它们是基类型的代理。
我找到了这个答案(以及其他一些答案),但是这个也给出了这篇文章的链接,以免丢失延迟加载。
问题
但是,在尝试将泛型方法放在返回类型参数类型的基类上的文章建议之后,我收到一个新错误
错误: “不能对 ContainsGenericParameters 为真的类型或方法执行后期绑定操作。”
注意:我知道我可以在映射中关闭延迟加载,但如前所述,我试图利用不丢失延迟加载的优势。
nHibernate 版本:3.3.1.4000 流畅的 nhibernate 版本:1.3.0.733
public class ItemBase : IItemBase
{
public virtual int Id { get; set; }
public virtual int Version { get; set; }
public virtual string Name { get; set; }
public virtual string Description { get; set; }
public virtual T As<T>() where T : ItemBase
{
return this as T;
}
//removed for brevity
}
public class Item : ItemBase
{
public virtual Store Store { get; set; }
}
public class VendorItem : ItemBase
{
public virtual Vendor Vendor { get; set; }
}
我错过了什么可以解决这个问题?
更新
为了增加这个问题,如果我使用会话中的 Nhibernate“Unproxy”方法:
NhSession.GetSessionImplementation().PersistenceContext.Unproxy
这仅在同一会话中有效。但是,在一种情况下,我们尝试在原始会话之外进行访问,但出现错误:对象是未初始化的代理