DDD,AutoMapper和工厂

时间:2016-05-18 16:09:13

标签: c# domain-driven-design automapper factory

我一直在研究DDD,看到很多代码能够在我目前的工作中建立一个新的api。

让我们假设以下分层架构:

  1. 阿比
  2. 应用服务(ViewModel在这里)
  3. 域(域名服务和域模型在这里)
  4. 红外线
  5. 应用服务使用自动播放器创建域模型对象,并将其传递给域服务层 。这是对的吗?

    如果我已经准备好在那里使用域模型对象,我为什么要使用工厂?我根本不理会工厂吗?

    由于我使用自动映射视图模型对象映射到域模型对象工厂出现在哪里? 我有一种感觉,我在这里错过了一些大事。

1 个答案:

答案 0 :(得分:9)

  

Application Service使用Automapper创建域模型对象,并将其传递给域服务层。这是对的吗?

没有。这就是你编写CRUD系统的方法。域实体应保护其自身的状态,域实体的所有修改都应通过 方法 进行。

类似的东西:

var user = repos.Get(userId);
user.ActivateAccount();
repos.Update(user);

因此,应用程序服务应该围绕操作建模,而不是仅仅传递与域实体完全相同的DTO。

  

使用您的示例,我将如何传递新用户?我应该使用AutoMapper映射到DTO用户,还是在我的域层中调用工厂

我会创建一个用户DTO,它包含域实体用户中的信息子集,只是成功创建用户所需的信息。

在应用程序服务中,您可以使用工厂创建实体,然后使用DTO中的信息填充它。我个人会创建一个没有工厂的实体,但在用户构造函数中提供必需的信息。