2011-02-02 90 views
0

我有兩個表,有多對一的關係,當從數據庫讀取所有數據時,我遇到性能問題。性能多對一關係

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的對象的列表,其中ClassA的對象包含CLASSB對象一次。

當請求來自ClassA的所有數據時,它工作得很好,但其速度非常緩慢,因爲對於ClassA的每個條目,執行sql語句(從ClassB選擇*,其中Id = ClassA.ID)以獲得類B.因爲我需要ClassB的數據,所以將lazy標誌設置爲true並不是解決方案。

任何人的想法如何獲得NHibernate,使所有的數據可以閱讀更好的性能?

謝謝!

回答

0

在編寫查詢時,您還可以指定連接類型,以防萬一您的所有ClassA都沒有ClassB。

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