实体框架中的DTO

cly*_*PHI 3 .net entity-framework n-tier-architecture

我计划在EF 4中实现NTier设计.我知道EF本身基于它在数据库中映射的表创建实体.我的问题是,DTO(数据传输对象)的用途是什么,还是真的需要?看起来它会促进冗余,因为您必须为EF生成的每个实体创建另一个DTO实体.请指导我.谢谢..

Lad*_*nka 9

DTO是用于仅在物理层之间传输所需数据的数据传输对象(当层位于另一个进程或另一个服务器上时).如果您只需要公开人的姓名和年龄,则无需转移她的地址,工作,子女等.因此,您将创建仅包含姓名和年龄的简单运输对象.

EF将创建将数据库记录映射到属性的实体.EF实体还可以使用自定义计算属性和方法扩展(通过部分类)到完整域对象.域对象不应直接暴露给不同的层,这是使用DTO的另一种情况.

编辑:

使用DTO的最后一种情况是跨境呼叫的优化.如果您有分层应用程序,其中一个层在进程边界上调用另一个层上的方法,则应该最小化这些调用,因为它们会降低性能(速度很慢).为此,您可以创建特殊的DTO,将复杂的数据结构(多个实体)传输到远程层上的某个主操作(外观),这将进一步使用数据执行多个业务操作.