2

在阅读了 Enitity Framework 之后,我有一些问题:

1]在层之间转移实体的最佳方式是什么? a]我是否必须为此创建更轻的 DTO,或者我可以有效地序列化实体并传输它?

b]如果我必须为效率创建轻量级 DTO,并且在我看到 Automapper 的良好用法之后,我不太明白它如何节省额外的编码(如果这是它的目标),我的意思是,我们需要编写 flattern 类( DTO) 属性,所以它只保存 ctor。

2]DTO 那里建立实体类有什么意义吗?

谢谢。

4

2 回答 2

2

对 1 的回答:在层之间传输实体的最佳方式取决于您的应用程序。您可以创建 DTO,这是我的首选解决方案,虽然序列化实体是可能的,但您需要确保这实际上是您想要做的并记住:

“当你使用二进制序列化和WCF数据契约序列化时,如果被序列化的对象在对象图中有相关对象,那么这些对象也会被序列化。XML序列化不会序列化相关对象。”

Automapper 通过自动映射属性来工作,而不必编写所有管道语句,例如:

dto.id = entity.id;
...
all other dto assignment operations

您很快就会看到管道代码的数量加起来,因此将节省相当多的这 = 那行代码,特别是如果您有视图类和 dto 对象,我发现这完全符合我的要求。据我所知,只有当实体和 DTO 之间的名称相同并且它可以在这些属性的类型之间进行映射时,automapper 才会起作用。如果 dto 和实体将数据存储在不同的类型中,您可以添加映射规则以在类型之间进行转换。

对 2 的回答:如果您将对象转换为 DTO 并在更高层修改它们,您打算如何通过实体框架将它们保存回来?通常您只需将这些转换回相关实体/创建一个新实体并提交这些更改。

于 2010-01-08T17:27:02.060 回答
0

您想查看RIA 服务。它就是为此而生的。

于 2010-01-08T17:15:19.837 回答