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

时间:2011-06-30 14:01:13

标签: c# oop design-patterns

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

* 已编辑* 感谢所有回复,我正在调查Automapper,发现它可能很合适。但是,我没有使用库,而是想创建自己的翻译器,这似乎就像重新发明轮子一样。但我的想法是,我会对事情有更多的控制权。

回到最初的问题

  1. 我应该在哪一层实现我的翻译,即我们有一个N轮胎应用程序,有两种思想流派,我们应该有一个业务层,并将其视为一个外观,并在那里实现所有翻译和其他业务逻辑将所有其他图层视为一个哑层,它不了解其他图层并保持对它们的最小引用,因此数据层将丢弃相同的数据实体,并且可以在另一个项目中重用,其中Business对象与我们的有些不同当前对象。第二种思想是数据层应该返回并接受业务实体,这将限制非数据库开发人员在数据库层上进行不必要的调用以创建业务权限。
  2. 这种翻译库的任何模式。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

N Layer sample app

答案 2 :(得分:0)

如果您通过网络移动数据,可以尝试使用DTO和ValueInjecter;如果使用ViewModels绑定到视图,则可以使用相同的工具... AutoMapper也很棒。