Мені просто довелося вимкнути ORM, і це було відносно жахливим завданням, оскільки логіка запитів просочувалася всюди. Якби мені коли-небудь довелося розробляти нову програму, моє особисте перевагу було б інкапсулювати всю логіку запитів (використовуючи ORM), щоб захистити її в майбутньому для змін. Шаблон сховища досить клопітно кодувати та підтримувати, тому мені було цікаво, чи існують якісь інші шаблони для вирішення проблеми?
Я можу передбачити повідомлення про те, що не додавати зайвих складностей, перш ніж це насправді потрібно, будучи спритними тощо, але мене цікавлять лише існуючі зразки, що дозволяють вирішити подібну проблему більш простим способом.
Моя перша думка полягала в тому, щоб створити сховище загального типу, до якого я додаю методи за необхідності до класів сховищ певного типу за допомогою методів розширення, але статичні методи одиничного тестування страшенно болісні. IE:
public static class PersonExtensions
{
public static IEnumerable<Person> GetRetiredPeople(this IRepository<Person> personRep)
{
// logic
}
}