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