nhibernate和虚拟类属性?

16 .net nhibernate

刚读完nHibernate,为什么类属性必须是虚拟的?

这背后的原因是什么?

And*_*are 19

我建议你阅读必须用NHibernate虚拟一切吗?

这个问题的快速答案是:因为我们需要成员才能虚拟加载魔法/伏都教.

更长的答案更有趣.任何真正的ORM必须具备的一个重要特性是透明的延迟加载.如果通过ORM检索对象,则不希望它自动引入整个对象图(不管是默认情况下),但是您不希望通过检查来查看代码是否已加载某些关联然而,如有必要,然后加载它们.这是ORM的责任.理想情况下,如果尚未检索数据,您希望能够访问属性并让ORM在首次访问这些属性时加载必要的数据.


Dan*_*ger 6

正如安德鲁所说,属性是虚拟的,可以触发延迟加载.以下是对原因的解释:在运行时,NHibernate会将代理对象替换为您的不动产对象.访问它们后,代理对象知道如何为您获取真实对象.将属性标记为虚拟允许此替换发生.