私はリポジトリパターンを実装しています。これの私の主な理由:
- 永続化の詳細からクライアント コードを抽象化するには (Entity Framework)
- テスト容易性をサポートする
汎用リポジトリかどうか?
私が遭遇した問題は、汎用リポジトリが必要かどうかです。メソッドは、特定のクエリを作成するIQueryable<T> Query()
手段を呼び出し元のコードに提供します。ここでの問題は、これが漏れやすい抽象化であることです。Entity Framework の仕様がクライアント コードに漏れています。
これは単体テストにどのように影響しますか?
ICustomerRepository
この実装で モックを作成することはできますか?これは私の永続層を一掃することにどのように影響しますか? Azure Storage Tables や NHibernate と同様です。
そうしないとICustomerRepository
、 や などの非常に特殊なクエリ メソッドを に実装する必要がGetIsActiveByFirstName()
ありGetIsActiveByDistrict()
ます。私のリポジトリクラスがさまざまなクエリメソッドでぎゅうぎゅう詰めになるので、これはとても嫌いです。このシステムには数百のモデルがあるため、作成および保守するこれらのメソッドが数百または数千になる可能性があります。