0

我正在尝试对客户实体的外键应用条件,即订单,我只想加载 IsCancelFlag 为假的订单。(结果将是客户类型,即客户对象,它包含一组订单对象)但是虽然遍历返回的结果,我可以看到客户下的所有订单,无论是否取消。是否可以在 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>();
4

1 回答 1

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 不会返回带有部分初始化订单的客户,因为这将是一个损坏的模型并且更改跟踪将被破坏。

于 2012-12-11T12:23:33.040 回答