Fel*_*ipe 4 c# domain-driven-design factory automapper
我一直在研究DDD并看到很多代码能够在我目前的工作中构建一个新的api.
我们假设以下分层架构:
该应用服务使用Automapper创建一个域模型对象,并将其传递给域名服务层.那是对的吗?
如果我已经准备好在那里使用域模型对象,我为什么要使用工厂?忽略工厂我会错吗?
由于我使用Automapper映射视图模型对象,以领域模型对象,并在工厂出现?我有一种感觉,我在这里错过了一些大事.
jga*_*fin 10
Application Service使用Automapper创建域模型对象,并将其传递给域服务层.那是对的吗?
不,这就是你编写CRUD系统的方法.域实体应该保护它自己的状态,并且域实体的所有修改都应该通过方法进行.
就像是:
var user = repos.Get(userId);
user.ActivateAccount();
repos.Update(user);
Run Code Online (Sandbox Code Playgroud)
因此,应用程序服务应该围绕操作建模,而不是仅仅传递看起来与域实体完全相同的DTO.
使用您的示例,我将如何传递新用户?我应该使用AutoMapper映射到DTO用户,并在我的域层中调用工厂
我将创建一个用户DTO,它将包含域实体用户中的信息子集,只是成功创建用户所需的信息.
在应用程序服务中,您可以使用工厂创建实体,然后使用DTO中的信息填充它.我个人会创建一个没有工厂的实体,但在用户构造函数中提供必需的信息.