Я разрабатываю проект с использованием многоуровневой архитектуры. У меня есть DAL, в котором я использую Entity Framework, уровень бизнес-логики, который использует объекты, возвращенные DAL, и уровень приложения.
Я не совсем уверен, что считаю это правильным, поэтому я просто спрошу вас, что вы думаете.
Мой DAL основан на мапперах. У меня есть типы - картографы - которые BLL использует для работы с моими данными. Эти преобразователи возвращают DTO, потому что я не хотел выставлять в мой BLL какие-либо объекты EF, поэтому их реализации не зависят от EF для работы.
Все эти мапперы выполняют CRUD-действия на одной «таблице», например:
using (var contex = new EFEntities()){
var obj = (from x in context.Table where x.ID == param select x).SingleOrDefault;
return Map(x.ToList());
}
Метод Map отображает объект EF в DTO, у которого есть только некоторые свойства для сопоставления значений, которые я хочу предоставить.
Есть ли более элегантный подход к этому? Я просто использую EF для облегчения доступа к моей базе данных - мне не нужно писать код ADO.NET.
Любые комментарии по этому вопросу приветствуются.
Спасибо.