gpt4 book ai didi

c# - Entity Framework (实体类)序列化

转载 作者:太空宇宙 更新时间:2023-11-03 11:51:31 24 4
gpt4 key购买 nike

阅读 Entity Framework 后,我有一些问题:

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

b] 如果我必须创建轻型 DTO,以提高效率,并且在我看到 Automapper 的良好用法之后, 我不太明白它如何节省额外的编码(如果这是它的目标), 我的意思是,我们需要编写平面类 (DTO) 属性,因此它只保存构造函数。

2]从 DTO 构建实体类返回有什么意义吗?

谢谢。

最佳答案

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

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

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

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

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

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

关于c# - Entity Framework (实体类)序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2029261/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com