实体框架(实体类)序列化

时间:2010-01-08 17:12:15

标签: c# .net entity-framework ado.net automapper

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

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

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

2] 从DTO构建实体类返回是否有任何意义?

感谢。

2 个答案:

答案 0 :(得分:2)

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

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

Automapper的工作原理是自动映射属性,而不必编写所有的管道语句,如:

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

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

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

答案 1 :(得分:0)

您想查看RIA Services。它就是为此而建的。