2011-02-02 7 views
0

多対1の関係を持つ2つのテーブルがあり、データベースからすべてのデータを読み込むときにパフォーマンス上の問題があります。パフォーマンスmany-to-one関係

にClassAはClassBの

設定にClassA

<id name="Id"> 
    <generator class="native" /> 
</id> 

<property name="FieldA1" column="FieldA1" /> 
<many-to-one name="ClassB" column="ClassBId" /> 

設定ClassBの

の親であります

<id name="Id"> 
    <generator class="native" /> 
</id> 

<property name="FieldB1" column="FieldB1"/> 

私はにClassAのオブジェクトを一度にClassBのオブジェクトが含まれているクラスAのオブジェクトのリスト、したいと思います。

ClassAのすべてのデータを要求すると、非常にうまくいくが、ClassAの各エントリに対して、クラスBを得るためにSQL文が実行される(ClassB from select = * ClassA.ID)ため、 lazyフラグをtrueに設定することは、ClassBのデータが必要なため解決策ではありません。

NHibernateをどのように取得して、すべてのデータをより良いパフォーマンスで読み取ることができるのか、

ありがとうございます!

答えて

0

クエリの作成時に、すべてのClassAにClassBがない場合に備えて、結合タイプを指定することもできます。

query.CreateAlias("ClassB", "B", JoinType.LeftOuterJoin);