为什么NHibernate需要不可设置的成员是虚拟的?

Geo*_*uer 3 nhibernate

NHibernate不仅要求您的域的可设置属性是虚拟的,还要求只获取属性和方法.有谁知道这是什么原因?

我无法想象可能的用途.

mac*_*kow 8

原因是延迟加载.为了使延迟加载成为可能,创建了一个代理类.它必须拦截来自"外部"的每个调用,以便在执行实际方法/属性之前加载您的实体.如果某些方法/属性不是虚拟的,则无法拦截这些调用,并且不会加载实体.