Я новичок в платформе Entity Framework (сначала код, если это имеет значение). Поскольку я использовал его, я строил классы POCO, думая о них как о моделях окончательного домена. С такими вещами, как Lazy Loading, мне нравится идея, что я могу использовать эти сущности непосредственно на моем уровне представления, получая ленивую загрузку того, что мне действительно нужно.Должен ли я думать о Entities в EF как о доменных моделях или DTO?
Однако я также недавно узнал о объектах передачи данных, о чем я раньше не слышал. Это абсолютно разумно; поведение моей конечной модели домена может иметь некоторые бизнес-правила, которые не относятся к DAL. Например, если POCO SalesOrder
, который я даю Entity Framework, включает в себя его окончательные методы, такие как AddItem(Product)
, который генерирует исключение, если Product
имеет DiscontinuedDate
, который находится перед SalesOrder.OrderDate
. Это определенно звучит как материал, который принадлежит BLL.
Таким образом, я полагаю, это означает, что классы POCO, которые я даю Entity Framework должен быть больше как DTO-х ?, как SalesOrderDto
и EmployeeDto
только простых маленьких держатели данных с только свойствами и без каких-либо методов, которые затем получить отображенные (возможно, с использованием AutoMapper) для объектов домена в моем BLL, которые затем передаются на уровень презентации?
Я на правильном пути здесь, или я что-то упускаю. Я чувствую смущение, потому что идея DTO имеет прекрасный смысл, но я никогда не видел, чтобы они использовались в контексте Entity Framework.
У меня была аналогичная проблема, и я получил пару ответов, которые могут вам пригодиться: http://stackoverflow.com/questions/11521192/placement-of-dto-poco-in-a-three- ярус-проект – GrandMasterFlush