2011-12-07 4 views
0

をロードされていません:NHibernateは1.xでは:多対1を遅延これは私のマッピングファイルの抽出物である

<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(...)を使用しないことを追加することがあります。

+0

Bの実際のインスタンスはBか、 )? –

+0

プロキシではありません。しかし、Bには左結合だけでなく、B.X、B.Yにも結合が残っています...あまりにも! –

答えて

1

もしあなたが<class name="XXX.B" lazy="false">ならば、NHibernateはプロキシクラスを作成しません。そのため、NHはプロキシオブジェクトを作成できないため、すべて<many-to-one class="XXX.B" lazy="proxy|true" />が無視されます。

Bのレイジーローディングを有効にするには、lazy="false"を削除するか、<class lazy="true">を設定します。すべてのメソッドを仮想化したくないためにクラスに対してLazyを無効にした場合は、独自のProxyclassを実装してLazyLoadingを処理することもできます。

関連する問題