Я прочитал десятки постов о плюсах и минусах попыток имитировать \ подделывать EF в бизнесе. логика. Я еще не решил, что делать, но знаю одно: мне нужно отделить запросы от бизнес-логики. В этом постея увидел, что Ладислав ответил, что есть 2 хороших способа:
- Пусть они будут там, где они есть, и используйте настраиваемые методы расширения, представления запросов, сопоставленные представления базы данных или настраиваемые определяющие запросы для определения повторно используемых части.
- Выставляйте каждый отдельный запрос как метод некоторого отдельного класса. Метод не должен выставлять IQueryable и не должен принимать Expression в качестве параметра = вся логика запроса должна быть заключена в метод. Но это сделает ваш класс охватывает связанные методы, очень похожие на репозиторий (единственный которые можно высмеять или подделать). Эта реализация близка к реализация, используемая с хранимыми процедурами.
Должен ли я инкапсулировать даже самые простые запросы, такие как:
с использованием (объекты MyDbContext = new MyDbContext)
{
Пользователь пользователь = сущности.Пользователи.Найти (идентификатор пользователя); // ИНКАПСУЛИРОВАТЬ ЭТО?
// Здесь какой-то BL-код
}