8

エンティティごとに異なるリポジトリを持つアプリケーションに取り組んでおり、検索ロジックを配置する必要があるため、検索ロジックをどこに配置する必要があるのか​​ 、検索用の新しいリポジトリを作成する必要があるのか​​ 、ロジックを配置する必要があるのか​​ 混乱しています既存のリポジトリ、および既存のリポジトリに配置する必要がある場合、それはどれですか。

リポジトリは以下にリストされています

public class VendorRepository
{

}

public class ProductRepository
{

}

Public Class ProductBatchRepository
{

}
4

7 に答える 7

2

ベースリポジトリではないのはなぜですか? このようなもの:

public class GenericRepository<T>
{
    protected IDbSet<T> Query<T>()
    {
        return myContext.GetDbSet<T>();
    }

    public IEnumerable<T> Where<T>(Expression<Func<T, bool>> predicate)
    {
        return Query<T>().Where(predicate).ToList();
    }

   ...
}

そしてリポジトリ:

public class ProductRepository : GenericRepository<Product>
{

}

public class VendorRepository : GenericRepository<Vendor>
{

}
于 2013-06-04T11:34:06.217 に答える
2

私が使いたい別のアプローチ...

...コマンドをクエリから分離できます。コマンドは、基礎となるドメイン モデルとリポジトリを使用します (現在のように?)。クエリが別のテクノロジーを使用する可能性があります。例えば; 最初にエンティティ フレームワーク コードを使用して直接データベースにクエリを実行します。

このようにして、(LINQ を使用して) クエリを実行したり、クエリの目的に価値を追加しないレイヤーをバイパスしたり、クライアント専用の戻り値の型を設計したりする柔軟性がすべて得られます。クエリが簡単になる場合は、データベース ビューを使用することもできます。

于 2013-06-04T11:14:10.740 に答える
0

議論に参加してくれてありがとう、私はこれについて多くのことを検索しました。最終的に、これはベストプラクティスに従っていないため、別のリポジトリにロジックを配置することにしましたが、これが私の問題の最良の解決策です.

于 2013-06-04T11:18:51.643 に答える