ORMを切り替える必要がありましたが、クエリロジックが至る所でリークしていたため、それは比較的困難な作業でした。新しいアプリケーションを開発する必要があった場合、個人的な好みは、すべてのクエリロジックを(ORMを使用して)カプセル化して、変更に対する将来性を保証することです。リポジトリパターンはコーディングと保守が非常に面倒なので、問題を解決する他のパターンがあるかどうか疑問に思っていましたか?
実際に必要になる前に余分な複雑さを追加しないこと、アジャイルであることなどについての投稿を予見できますが、私は既存のパターンが同様の問題をより簡単な方法で解決することにのみ興味があります。
私が最初に考えたのは、必要に応じて拡張メソッドを介して特定のタイプリポジトリクラスにメソッドを追加する汎用タイプリポジトリを使用することでしたが、静的メソッドのユニットテストは非常に苦痛です。IE:
public static class PersonExtensions
{
public static IEnumerable<Person> GetRetiredPeople(this IRepository<Person> personRep)
{
// logic
}
}