NHibernate:为什么必须将非持久性属性标记为虚拟以进行延迟加载

Dav*_*vid 5 nhibernate virtual lazy-loading

我有点明白为了允许延迟加载,NHibernate 需要生成一个扩展 POCO 类的代理类。所以我猜 NHibernate 需要覆盖持久化属性的实现,你必须将它们标记为虚拟。

我不明白的是为什么我必须将几乎所有其他东西也标记为虚拟。例如,我必须标记一个 IsValid 属性,该属性引用其他属性,但显然它本身不是持久的,而且奇怪的是,我必须将类可以发出的所有事件也标记为虚拟。

有谁知道这是为什么?我只是好奇。

谢谢

大卫