2012-05-04 27 views
0

如何使用Criteria API加載子元素和子集合。我已經閱讀了幾乎所有可以在google上找到的鏈接,但子元素不會被加載。NHibernate使用Criteria API加載子元素/集合

這裏是我的設置

訂單具有的OrderItems和在指定我的DTO的

在流利的映射功能的訂單,我有這些顯着的線:

LazyLoad(); 
this.HasMany<OrderItems>(x => x.OrderItems).KeyColumns.Add(new[] { "OrderId"}); 

在我存儲庫類,我創建從我的標準類查詢和檢索列表:

DetachedCriteria query = criteria.CreateCriteria(); 
IList<Orders> myOrders = 
    query.GetExecutableCriteria(UnitOfWork.CurrentSession).List<Orders>(); 

當我嘗試訪問myOrders.OrderItems時,它們是空的(它們確實在我的數據庫中)。我以爲在映射功能將使這個LazyLoad()調用...

於是,我就渴望負載是這樣的:

query.SetFetchMode("Orders.OrderItems", NHibernate.FetchMode.Eager) 

BU這也不行。

我哪裏錯了?

回答

0

試試這個映射供您參考:

this.References<OrderItems>(x => x.OrderItems) 
    .Column("OrderId") 
    .LazyLoad(); 

this.References<OrderItems>(x => x.OrderItems) 
    .Column("OrderId") 
    .Not.LazyLoad(); 
+0

感謝您的答覆。當我有機會測試時,我會發布結果。 – getit

相關問題