2012-05-04 25 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

相关问题