我正在尝试在客户实体的外键上应用条件,即Orders,我只想加载IsCancelFlag为false的订单。(结果将是customer类型的客户对象,并且它包含一组Order对象)但是在迭代返回的结果时,我可以看到客户下的所有订单,无论其是否被取消。是否可以在nhibernate中应用外键条件
ICriteria _criteria= session.CreateCriteria<Customer>();
_criteria.Add(Expression.Eq("CustomerId", 12));
_criteria.CreateAlias("FKorders","FKorders");
_criteria.Add(Expression.Eq("FKorders.IsCancelFlag", false));
return _criteria.UniqueResult<Customer>();
答案 0 :(得分:1)
你的物业名称似乎已经成熟,但也许你想要
var query =
from c in session.Query<Customer>()
from o in c.Orders
where o.IsCanceled
select new { Customer = c, Order = o }
var results = query.AsEnumerable()
.ToLookup(a => a.Customer, a => a.Order);
这将返回ILookup<Customer, Orders>
。 NHibernate不会返回具有部分初始化订单的客户,因为这将是一个损坏的模型,并且更改跟踪将被破坏。