0

只是为了咨询那里的 NHibernate 大师,我知道(并广泛使用)延迟加载的集合。

然而,迄今为止,我一直无法确定在类级别上设置惰性属性意味着什么。

在我们现有的 hbm 文件中,它们都具有将惰性设置为 false 的类节点。例如

<class name="Decision" lazy="false" ...>

我已经通过删除此属性进行了实验(默认情况下为 true),结果是我得到了一个InvalidProxyTypeException

我认为这是因为它将所有属性(即引用类型)和集合设置为lazy="true",无论它们是否是数据对象。

所以我的问题是,这个假设是否正确?在 NHibernate 配置的类节点级别设置lazy="true" 是否默认将所有引用类型和集合类型设置为lazy="true"?lazy="true" 在课堂上还有什么其他作用吗?

如果我上面说的是真的,那么这也意味着不可能将普通属性与域对象中的数据属性混合在一起,除非您还将这些属性设置为虚拟,即使没有必要,例如

public virtual FirstName {get; set;}
public virtual LastName {get; set;}
public FullName {get{ return FirstName + " " + LastName;}} // InvalidProxyTypeException thrown!
4

1 回答 1

1

在写下这个问题之后,看起来它已经被问到并得到了回答。

NHibernate 中的延迟加载

我想这证实了我的猜想是对的。

于 2012-07-17T10:17:16.743 回答