在域和数据库之间映射对象

时间:2014-11-07 13:29:09

标签: n-tier-architecture

在数据库对象和域对象之间进行映射时,我的应用程序的“层”应该包含在哪个功能中?

说我有:

  • DAL - 引用了核心域
  • Service - 引用了DAL和核心域

在这种情况下,映射的位置更合适?

2 个答案:

答案 0 :(得分:1)

在这种情况下,您的DAL将是一个好地方,因为它已经引用了您的域实体应该存在的核心。它可以提取数据,并在返回之前将其转换为域对象。

通过这种方式,您可以将DB对象的知识封装到DAL层,这是一件好事。如果您需要更改数据库,则只需修改此层。应用程序的其余部分只知道域。

答案 1 :(得分:0)

如果你想遵循这样一个原则:一个层只需要了解下一层(从Law of Demeter获取的想法),最好的做法是将翻译代码放在服务层中。 / p>

然而,由于核心域可以被视为服务和数据访问层中间的另一层,并且考虑到服务层直接与DAL对话(打破LoD原则),可能是更简单,更实用的解决方案(正如@wblanks所说)可能是将翻译代码放在数据访问层中。