0

次のような状況があります。

ユーザーがログインし、すべての製品の概要を開き、条件が追加された製品のリストのみを表示できます。この条件は可変です。例:WHERE category in ('catA', 'CatB')

管理者がログインし、すべての製品の概要を開くと、フィルタが適用されていないすべての製品が表示されます。

これをできるだけ動的にする必要があります。私のデータ アクセス クラスは、ほとんどの場合 Generics を使用しています。

フィルターを見 たことがありますが、私の条件は非常に変化しやすいため、これを十分に拡張できるとは思いません。

4

2 に答える 2

2

似たようなものにNHフィルターを使用しますが、正常に機能します。フィルタを適用する必要がない場合は、フィルタの値の設定を省略できます。これらのフィルターは、より基本的なもの、ほぼ100%の時間適用されるフィルター、fx削除オブジェクトフィルター、クライアントデータの分離などに使用されます。探しているスケーラビリティの側面がわかりませんか?

より高レベルで複雑なフィルタリングのために、リポジトリルートを操作するカスタムクラスを使用します。次のようなもの:

 public IQueryOver<TIn, TOut> Apply(IQueryOver<TIn, TOut> query)
 {
      return query.Where(x => ... );
 }

NHの使用法と統合されたIoCコンテナがある場合、このようなものは簡単に一般化してスタックにプラグインできます。これらのリポジトリマニピュレータには、単純なwhere句を実行するものと、ドメインロジックを参照する複雑なwhere句を生成するもの、および2番目のテーブルを結合してその上でフィルタリングするものがあります。

于 2013-02-20T10:18:34.827 に答える