gpt4 book ai didi

c# - 从数据对象转换为业务对象。最佳实践

转载 作者:行者123 更新时间:2023-11-30 12:34:55 26 4
gpt4 key购买 nike

假设DataLayer中有一个UserEntity需要转换为BusinessLayer中的User。这两种类型之间没有 1:1 的映射,继承不是一种选择。

我想将 User 转换为 UserEntity,反之亦然。这样做的最佳方法是什么?我看到了一些模式,但我不知道哪个更好以及为什么:

  1. 在用户 2 中实现方法:From Entity 和 ToEntity
  2. 实现类型转换器
  3. 重载 = 运算符

最佳答案

不要重载赋值运算符——它很讨厌并且会咬住任何继承你的代码的开发者。最好是明确的。

我会将映射这两种类型(或更多,如果不是 1:1)的逻辑封装在一个单独的类中。创建一个 UserAdapter 类,您可以在其中实现您的 ToEntity/FromEntity 方法。

并确保使用 AutoMapper 以尽量减少代码量。

AutoMapper uses a fluent configuration API to define an object-object mapping strategy. AutoMapper uses a convention-based matching algorithm to match up source to destination values. Currently, AutoMapper is geared towards model projection scenarios to flatten complex object models to DTOs and other simple objects, whose design is better suited for serialization, communication, messaging, or simply an anti-corruption layer between the domain and application layer.

更新:

您可以将这些方法添加到 User 类中,这对于小型项目来说可能就足够了。在设计方面我有点纯粹主义者,并且会将适配器逻辑保留在这些类之外。 为什么 User 类应该依赖并且对 UserEntity 类有任何了解?将它们捆绑在一起对我来说有点味道。单独的适配器层更具前瞻性。例如,如果您必须用不同的数据库层替换您的数据库层(即从 Linq2SQL 迁移到 EntityFramework 或 Dapper),您需要做的就是创建新的适配器 - 您的业务类将保持不变。

关于c# - 从数据对象转换为业务对象。最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6478981/

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