gpt4 book ai didi

design-patterns - DDD : Can an Aggregate Root be an Entity within another Aggregate Root?

转载 作者:行者123 更新时间:2023-12-01 17:30:19 26 4
gpt4 key购买 nike

我正在尝试对一个公司拥有许多团队的问题进行建模。有一条业务规则“每个公司的团队名称必须是唯一的”。然而,团队还有许多其他行为,例如加入。此外,一个团队可以有许多报告 - 它们维护对Team.Id的引用。

目前,TeamCompany 是单独的聚合根。为了强制执行 Team.Name 对于每个 Company 必须是唯一的不变式,我是否可以在 Company 内创建一个团队实体 哪个聚合只负责Team的创建和重命名?我相信Company必须创建Team才能执行规则,并负责重命名,但仅此而已。

我的问题是:这正常吗?跨聚合边界分割域概念是强制不变量的正常方法吗?

我能看到的唯一替代方案是将整个Team 聚合移动到Company 聚合中。但在本例中,我将在 Report 中存储对非聚合的引用。

我想这是一个常见的建模问题,但 Google 让我失望了!

非常感谢任何帮助!

最佳答案

Team.Name must be unique per Company

为什么?这真的是一个领域不变性还是更多的技术规则,这样您就不会在团队管理 UI 上混淆 2 个团队?

如果是后者,您可能应该让应用程序服务通过询问 TeamRepository 来处理该规则,并在唯一性被破坏时返回异常。

合并CompanyTeam聚合可能是一种选择,但对我来说,这似乎是一个非常小的域规则,导致这样的转换。如果两个聚合已经很大并且可能导致争用和并发问题,则更是如此。通过引用 TeamReport(大概是 AR?),您已经可以看到 Team 可能会成为您应用程序中的中心点。将其封装在其他东西中似乎很奇怪。

http://gojko.net/2010/06/11/udi-dahan-the-biggest-mistakes-teams-make-when-applying-ddd/

http://thinkbeforecoding.com/post/2009/10/28/Uniqueness-validation-in-CQRS-Architecture

关于design-patterns - DDD : Can an Aggregate Root be an Entity within another Aggregate Root?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29117049/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com