我有Order和OrderLines的简单域名。是否可以在没有连接的情况下加载Order和关联的OrderLine对象?我正在尝试使用Future / FutureValue来执行两个简单的查询。我希望NHibernate知道如何在缓存中组合这些。我正在使用NHibernate 3.2和仅代码映射。
到目前为止,我所拥有的是:
// Get all the order lines for the order
var lineQuery = session.QueryOver<OrderLine>()
.Where(x => x.WebOrder.Id == id).Future<OrderLine>();
// Get the order
var orderQuery = session.QueryOver<WebOrder>()
.Where(x => x.Id == id)
.FutureValue<WebOrder>();
var order = orderQuery.Value;
这可以按预期将两个查询发送到数据库中。但是当我使用循环来完成order.OrderLines NHibernate发送另一个查询来获取订单行。我的猜测是因为我正在使用约束(Where(x =&gt; ...)NHibernate不知道如何从会话缓存中获取对象。
为什么我要在不加入
的情况下执行此操作我知道我可以使用Fetch(x =&gt; x.OrderLines).Eager但有时实际的父(在这种情况下是Order)是如此之大,以至于我不想执行连接。如果我执行连接,则所有结果集都包含每个订单行的所有订单列。我没有任何原始数字或任何我只是想知道这是否可能。