0

Customer エンティティの外部キー、つまり Orders に条件を適用しようとしています。IsCancelFlag が false である注文のみをロードしたいです。返された結果を繰り返し処理すると、キャンセルされたかどうかに関係なく、顧客の下にあるすべての注文を確認できます。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 は部分的に初期化された Orders を持つ Customer を返しません。これは壊れたモデルになり、変更の追跡が壊れるからです。

于 2012-12-11T12:23:33.040 に答える