实现DB类型对象到业务类型对象之间的转换器的最佳模式

本文关键字:对象 类型 转换器 最佳 模式 业务 DB 实现 之间 | 更新日期: 2023-09-27 18:00:42

我们的项目已经实现了Entity框架,我们在所有层中浮动实体对象类型。由于这些对象的巨大规模,我们决定拥有业务实体和数据实体。现在我很困惑1) 在哪里实现这些对象的翻译2) 如何,即我应该遵循的任何模式或实践,以获得更好的结果。

*已编辑*感谢所有的回复,我正在研究Automapper,发现它可能很适合。但我不想使用图书馆,而是想创建自己的翻译器,这似乎是在重新发明轮子。但我的想法是,到那时我会对事情有更多的控制权。

所以回到最初的quesiton

  1. 我应该在哪一层实现我的翻译,即我们有一个N-tire应用程序,有两种思想流派,一种是我们应该有一个业务层,并将其视为门面,在那里实现所有翻译和其他业务逻辑,另一种是将所有其他层视为愚蠢的层,对其他层一无所知,并尽量减少对它们的引用,以便数据层抛出相同的数据实体,并且可以在另一个项目中重用,其中业务对象与当前对象有些不同。第二种观点是,数据层应该返回并接受业务实体,这将限制非数据库开发人员不必要地调用数据库层来创建业务实体
  2. 这类翻译库的任何模式

实现DB类型对象到业务类型对象之间的转换器的最佳模式

这听起来类似于许多人在将MVVM模式与ORM关联使用时所面临的问题。自动映射器(http://automapper.codeplex.com/)是一个很好的库,可以在类型之间提供干净的、基于约定的翻译。

请看下面的内容,它对所有微软技术都有一个非常好的概述。虽然它可能有点复杂,但它很好地显示了层次。

N层示例应用

如果您正在通过连线移动数据,则可以尝试DTO和ValueInjecter,如果您使用ViewModels绑定到Views,则可以使用相同的工具。。。AutoMapper也很棒。