2

抽象フィルター オブジェクトから NHibernate が理解できるフィルターを作成できるメソッドを作成しています (フィルターとは、たとえば ICriteria オブジェクトのセットを意味します)。

public static IEnumerable<ICriterion> ToNhCriteria(this MyCriteria criteria)
{
   // T4 generated function
   // lots of result.Add(Expression.Or(Expression.Eq(),Expression.Eq)) expression trees - hard to generate
   // Is there a way to generate HQL/Linq query here istead?
}

それから私は次のようなことをしたい

session.CreateCriteria<Entity>().Add(myCriteria.ToNhCriteria())

エンティティをフィルタリングします。問題は、式を使用することです。メソッド(Expression.Orなど)は非常に面倒です(メソッドが生成され、何らかの形で式に結合する必要がある複数の or ステートメントがあります)。Expression.Or() の使用を避け、LINQ または HQL を使用して ICrietrion / ICriteria を作成する方法はありますか?

4

3 に答える 3

1

ねえ、あなたはこの質問をチェックしましたか?Linq から NHibernate、MultiCriteria への移行を示しています (途中で linq クエリを ICriteria に変換します)。

于 2010-06-21T04:52:44.283 に答える
0

WHERE 句を使用してデータベース側ではなくコレクション側でフィルタリングを行う場合を除き、Linq は最適なソリューションではありません。Ayende は、ICriteria API が動的フィルターの作成に適していることを示唆しています。複数の OR で発生した問題は、Restrictions.Disjunction() を使用することで解決されました...非常に単純化されました。そのようなものはNHibernateに存在します:)

于 2010-04-27T17:43:27.413 に答える
0

いいえ、それは不可能です。基準の代わりに linq を使用してみませんか?

于 2010-04-27T15:22:49.167 に答える