我在使用 Linq to NHibernate 加载对象并急切加载子集合时遇到问题。对象如下所示:
public class Order
{
public Guid Id {get; set; }
public IList<OrderLine> OrderLines {get;set;}
}
public class OrderLine
{
public Guid Id {get;set;}
public string Item {get;set;}
}
我正在尝试使用 Linq 加载具有特定 ID 和(急切地)所有子 OrderLines 的订单。我的查询如下所示:
using (var s = _sessionFactory.OpenSession())
using (var tx = s.BeginTransaction())
{
var order = from o in s.Linq<Order>().Expand("OrderLines")
where o.Id == id
select o;
return order.First();
}
但是,当我显示订单时,该OrderLines
属性只包含一个对象——数据库肯定有 3 个。奇怪的是,如果我在返回之前执行一次 foreach,order
我确实得到了所有 3 个子项——但这会命中数据库两次。
我已经尝试修改查询以使用Single()
,但这也不起作用。
我对 linq 做错了吗?还是我的用法Expand
不正确?
在此先感谢,
西蒙。
注意:我使用 FluentNHibernate Automapping 来创建我的 NH Mapping,我的数据库是一个 Sqlite 数据库(一个文件,不在内存中)。