NHibernate延迟加载但没有虚拟属性?

Dav*_*vid 1 c# nhibernate lazy-loading

我正在经历一些奇怪的事情.我正在通过代码修改NHibernate 3.2映射,并且有一个非常简单的对象模型,我只是用来玩.

我在整个模型中的所有属性都没有标记为虚拟,因为我不想延迟加载.我正在按代码映射,并在每个类映射中进行设置Lazy(false);

但是,当涉及映射集合时,如果我在会话结束后尝试访问集合,则会出现错误"failed to lazily initialize a collection of role...".

我必须collectionMapping.Lazy(CollectionLazy.NoLazy);在它急于加载集合之前明确设置.我的理解是,除非您的模型中的属性是在虚拟定义的,否则无法进行延迟加载?

我从根本上错过了什么吗?

Dan*_*ite 7

virtual需要的不仅仅是延迟加载.NHibernate要求它们是virtual因为它创建了类的运行时代理并注入行为.

  • ...但代理仅用于延迟加载。 (2认同)