C# c中DTO(数据传输对象)和代理对象的区别#
在实体框架中,这两个术语用于DTO和代理对象。如果使用DTO传输状态,我会感到困惑,那么为什么要使用此代理对象?代理对象是从模型类继承的对象,但添加了一些功能,如状态管理。这通常用于使您的模型不必从任何特殊类继承C# c中DTO(数据传输对象)和代理对象的区别#,c#,entity-framework,C#,Entity Framework,在实体框架中,这两个术语用于DTO和代理对象。如果使用DTO传输状态,我会感到困惑,那么为什么要使用此代理对象?代理对象是从模型类继承的对象,但添加了一些功能,如状态管理。这通常用于使您的模型不必从任何特殊类继承 数据传输对象不是来自模型的对象,但它们表示相同的数据。您通常使用它们与不知道您的模型的服务进行通信。DTO和代理对象不是EF概念,而是一般概念 DTO或“数据传输对象”是专门为在应用程序的层或服务之间移动数据而创建的对象。使用DTO有几个原因,但大多数情况下是层或服务之间所需的信息在层
数据传输对象不是来自模型的对象,但它们表示相同的数据。您通常使用它们与不知道您的模型的服务进行通信。DTO和代理对象不是EF概念,而是一般概念 DTO或“数据传输对象”是专门为在应用程序的层或服务之间移动数据而创建的对象。使用DTO有几个原因,但大多数情况下是层或服务之间所需的信息在层或服务端之间不同。例如:
- 您有一个具有许多属性的实体,而服务客户端或另一层只需要其中的一些属性:使用所需的属性创建DTO,将原始属性从原始实体映射到DTO,并在服务/层上公开DTO
- 您需要公开具有来自不同实体的属性的对象:创建具有所有必需属性的DTO,将实体中的属性映射到DTO并公开它。例如,您可能需要一个平面对象,该对象具有EF实体的属性和与其相关的“主表”(例如,与FK关联的描述或名称)
- 您需要公开具有不同形状、聚合数据或任何其他更改的实体
因为它们是原始对象的子类,所以它们具有相同的属性,但行为不同 您阅读此
ProxyObject
的上下文是什么?顺便说一下,您真的不应该将DTO与EF一起使用。实际上,我使用的是webmodel,并使用automapper将webmodel映射到entity类。然后,当我保存实体时,我如何能够从映射到实体的web模型中获取生成的id(自动递增)?