2011-07-26 5 views
1

ユーザー入力に基づいてさまざまな方法(結合、結合解除など)で結合するいくつかのICriterionインスタンスがあります。私は関連するコレクション内の値を一致させることに基づいているICriterionを作成するのに問題があります。例えばコレクションの内容に基づいてフィルターをかけるNHibernateでICriterionを作成する方法

は、受注とのOrderItemsの間に1対多の関係を考えると、私は> 100

数量でのOrderItemを持っているすべての注文を選択ICriterionを作成できるようにしたい私がしましたいくつかのことを試みたが、まだ動作するものは見つけていない。

答えて

1

私はプロジェクトで同じ問題を抱えていました。フィルタリングされたコレクションごとにエイリアスと基準のペアが必要です。

KeyValuePair<string, ICriterion[]> collectionfilters = GetFromSomeWhere(); 

foreach (var association in collectionfilters) 
{ 
    criteria.CreateAlias(association.Key, association.Key); 

    foreach(var crit in association.Value) 
    { 
     criteria.Add(crit); 
    } 
} 

// example 
KeyValuePair<string, ICriterion[]> GetFromSomeWhere() 
{ 
    return new KeyValuePair<string, ICriterion[]>("OrderItems", new []{ Restrictions.Gt("OrderItems.Quantity", 100) }); 
} 
+0

ありがとう、フィロ、それは働いた。私はRestrictions.Whereを使用してそれをしようとしていた(ラムダ式) "魔法の文字列"の使用を避けるために、私はそれを動作させることができませんでした。 – MylesRip

関連する問題