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(...)

NHibernate 1.X:多对一不惰性加载

如果你有<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