微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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),您需要做的就是创建新的适配器 – 您的业务类将保持不变.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐