如何使用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)
这也不起作用。
我哪里错了?
答案 0 :(得分:0)
尝试此映射供您参考:
this.References<OrderItems>(x => x.OrderItems)
.Column("OrderId")
.LazyLoad();
或
this.References<OrderItems>(x => x.OrderItems)
.Column("OrderId")
.Not.LazyLoad();