从数据对象转换为业务对象。最佳做法

| 假设DataLayer中有一个UserEntity,需要将其转换为BusinessLayer中的User。这两种类型之间没有1:1的映射,并且继承不是一种选择。 我想将User转换为UserEntity,反之亦然。最好的方法是什么?我看到了一些模式,但我不知道哪个更好,为什么: 在用户2中实施方法:从实体和ToEntity 实现TypeConverter 重载=运算符     
已邀请:
        不要重载赋值运算符-这很讨厌,并且会咬任何会继承您代码的开发人员。最好是明确的。 我将封装用于在单独的类中映射这两种类型(如果不是1:1,则更多)的逻辑。创建一个
UserAdapter
类,您可以在其中实现
ToEntity
/
FromEntity
方法。 并确保使用AutoMapper将代码量减至最少。   AutoMapper使用流畅的配置   定义对象-对象映射的API   战略。 AutoMapper使用   基于约定的匹配算法   将源与目标值匹配。   目前,AutoMapper已做好准备   对模型投影方案   将复杂对象模型展平到DTO   和其他简单的对象,其设计   更适合序列化,   通讯,消息传递,或者仅仅是   之间的反腐败层   域和应用程序层。 更新: 您可以将这些方法添加到
User
类中,这对于一个小型项目可能就足够了。在设计方面,我有点纯粹,可以将适配器逻辑放在这些类之外。为什么
User
类是从属的并且对
UserEntity
类有任何了解?我把它们绑在一起有点气味。单独的适配器层更具前瞻性。例如,如果您必须将数据库层替换为另一层(即,从Linq2SQL迁移到EntityFramework或Dapper),那么您要做的就是创建新的适配器-您的业务类将保持不变。     

要回复问题请先登录注册