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

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

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

>在User 2方法中实现:从Entity和ToEntity
>实现TypeConverter
>重载=运算符

最佳答案 不要重载赋值运算符 – 这是令人讨厌的,并会咬任何将继承您的代码的开发人员.最好是明确的.

我将封装用于在单独的类中映射这两种类型(或更多,如果它不是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),您需要做的就是创建新的适配器 – 您的业务类将保持不变.

点赞