聚合一个实体

时间:2015-02-22 12:11:10

标签: entity domain-driven-design aggregate ddd-repositories aggregateroot

在Domain驱动的设计中,如果我想使用存储库,我需要有一个聚合 - 正如我所理解的那样。

所以我有一个用户,有id,登录,电子邮件和密码。用户是具有唯一ID的域实体。

当我想添加一个User to User存储库时,我是否应该首先构建一个只有Aggregate Root的聚合,这是我的用户实体,仅此而已?在这种情况下,它看起来像User的代理,不需要的层。

或许我错过了什么?也许用户不是一个实体,即使它看起来像这样。或者我可以将实体直接放到存储库?

2 个答案:

答案 0 :(得分:6)

聚合根(AR)是一个实体,并且拥有作为其自身聚合根的实体非常常见。

您的User实体只是一个聚合根。你不需要额外的具体课程。

答案 1 :(得分:1)

  

在Domain驱动的设计中,如果我想使用我需要的存储库   它的汇总 - 据我了解。

我想提出的一件重要事情是我们不为存储库创建聚合,我们创建存储库因为我们需要持久聚合。

存储库处理整个聚合,仅此而已。它们保留了应该定义聚合的事务边界。

  

当我想添加User to User存储库时,我应该先构建一个   聚合只有聚合根,这是我的用户实体而没有   更多?在这种情况下,它看起来像是User的代理,不需要的图层。

单实体聚合绝对没有问题。在这种情况下,实体将是聚合根和整体聚合。

我建议你阅读Vaughn Vernon的Effective Aggregate Design系列。