0

如何使用 Criteria API 加载子元素和子集合。我已经阅读了几乎可以在 google 上找到的所有链接,但不会加载子元素。

这是我的设置

订单有 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)

但这也不起作用。

我哪里错了?

4

1 回答 1

0

试试这个映射供您参考:

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

或者

this.References<OrderItems>(x => x.OrderItems)
    .Column("OrderId")
    .Not.LazyLoad();
于 2012-05-05T10:10:29.420 回答