我是实体框架的新手(代码优先,如果重要的话)。当我一直在使用它时,我一直在构建我的 POCO 类,将它们视为最终的域模型。对于延迟加载之类的东西,我喜欢这样的想法,即我可以直接在我的表示层中使用这些实体,从而延迟加载我真正需要的东西。
但是,我最近还了解了数据传输对象,这是我以前从未听说过的。这绝对有道理;我的最终域模型的行为可能有一些不属于 DAL 的业务规则。例如,如果SalesOrder
我提供给实体框架的 POCO 是否包含它的最终方法,例如,AddItem(Product)
如果在. 这听起来绝对像是属于 BLL 的东西。Product
DiscontinuedDate
SalesOrder.OrderDate
所以,我想这意味着我给实体框架的 POCO 类应该更像 DTO 的?,就像SalesOrderDto
只是EmployeeDto
简单的小数据持有者,只有属性,没有方法,然后被映射(可能使用 AutoMapper)到我的 BLL 中的域对象,然后传递给表示层?
我是在正确的轨道上,还是我错过了什么。我感到困惑,因为 DTO 的想法非常有意义,但我从未见过它们在实体框架的上下文中使用。