【问题标题】:How many aggregate roots do I have我有多少个聚合根
【发布时间】:2013-04-28 15:33:08
【问题描述】:

这些是我的实体和关系:

没有实体 A 就不能存在任何实体。当 A 被删除时,所有其他实体也将被删除。因此 A 是我的聚合根。

但我不确定

1.) B is also an aggregate root for entity C,D and E 
2.) E is also an aggregate root for entity F

1.) C,D and E can not exist without B being created
2.) F can not exist without E being created

我现在是否有 3 个聚合根并因此创建 3 个存储库?

【问题讨论】:

  • 在对领域进行建模时,AR 会自然出现。您在这里拥有的是关系数据库模式。有界上下文 (BC) 决定聚合开始和结束的位置。在不同的 BC 中具有相同名称但结构略有不同的实体也很常见,即产品实体实现可以从一个 BC 中的 (ID,Name) 到其他 BC 中具有大量细节的完整产品。在定义聚合及其根时要非常小心,域对象的错误建模是 DDD 最常见的缺陷。

标签: domain-driven-design aggregateroot


【解决方案1】:

如果没有关于您的域的更多信息,就不可能就聚合边界提出建议。实体之间的关系不如与实体关联的行为相关。实体之间的关系不会自动转换为对象引用;关系也可以实现为存储库。

聚合是一致性边界。换句话说,它聚合了在执行相关行为时必须保持一致的状态。在您的情况下,很可能这些实体中的每一个都是一个集合。查看effective aggregate design 以更好地了解将域分解为聚合。

【讨论】:

    猜你喜欢
    • 2016-11-29
    • 1970-01-01
    • 1970-01-01
    • 2019-04-24
    • 2021-07-02
    • 2011-07-06
    • 2015-01-04
    • 2018-08-12
    • 1970-01-01
    相关资源
    最近更新 更多