【发布时间】:2011-08-19 09:28:25
【问题描述】:
我计划在 EF 4 中实现 NTier 设计。我知道 EF 本身会根据它在数据库中映射的表创建实体。我的问题是,DTO(数据传输对象)的用途是什么,还是真的需要它?看起来它促进了冗余,因为您必须为 EF 生成的每个实体创建另一个 DTO 实体。请指导我。谢谢..
【问题讨论】:
标签: .net entity-framework n-tier-architecture
我计划在 EF 4 中实现 NTier 设计。我知道 EF 本身会根据它在数据库中映射的表创建实体。我的问题是,DTO(数据传输对象)的用途是什么,还是真的需要它?看起来它促进了冗余,因为您必须为 EF 生成的每个实体创建另一个 DTO 实体。请指导我。谢谢..
【问题讨论】:
标签: .net entity-framework n-tier-architecture
DTO 是数据传输对象,用于仅在物理层之间传输所需的数据(当层位于另一个进程或另一个服务器上时)。如果您只需要公开人的姓名和年龄,则不需要转移她的地址、工作、子女等。因此您将创建仅包含姓名和年龄的简单传输对象。
EF 将创建将数据库记录映射到属性的实体。 EF 实体也可以(通过部分类)扩展为具有自定义计算属性和方法的完整域对象。域对象不应直接暴露给不同的层,这是使用 DTO 的另一种情况。
编辑:
使用 DTO 的最后一种情况是优化跨界调用。如果您有分层应用程序,其中一层调用另一层上的方法超过进程边界,您应该尽量减少这些调用,因为它们会降低性能(很慢)。为此,您可以创建特殊的 DTO,将复杂的数据结构(多个实体)传输到远程层上的某个主操作(外观),这将进一步使用数据来执行多个业务操作。
【讨论】:
当您需要传递实体的一部分或捆绑在一起的几个实体时,DTO 最有用。此外,您的实体实际上与某些实体上下文相关联,因此当您将实体传递到外部时,它们可以对其执行方法、更改数据等。如果您只想将对象传递到外部,在这种情况下,您可以受益于使用 DTO。
【讨论】: