NHibernate 1.X:多对一不惰性加载
本文关键字:加载 多对一 NHibernate | 更新日期: 2023-09-27 18:16:57
这是我的映射文件的摘录:
<class name="XXX.A"
table="a"
lazy="false">
<many-to-one name="B"
lazy="proxy"
access="field.camelcase"
cascade="none"
not-null="false"
class="XXX.B"
column="id_b"/>
</class>
但是当A
通过其ID加载时,我看到"左连接"来获取B
。如何预防这种情况?
我可以补充一下,我们使用ISession.Get(...)
而不是ISession.Load(...)
。
如果你有<class name="XXX.B" lazy="false">
,那么NHibernate不会为它创建代理类。因为所有的<many-to-one class="XXX.B" lazy="proxy|true" />
被忽略,因为NH不能创建代理对象。
要使能B
的惰性加载,请删除lazy="false"
或设置<class lazy="true">
。如果你因为不想让每个方法都是虚拟的而禁用了类的Lazy,你也可以实现你自己的Proxyclass来处理Lazy loading