【问题标题】:DDD Large AggregatesDDD 大型聚合
【发布时间】:2014-05-30 09:51:08
【问题描述】:

我有一个Appointment 聚合根,要使聚合在业务方面有效,它必须引用许多其他聚合,从而显着增加大小; ClientEmployeeService,开始/结束日期和时间。

Appointment 是从 Web 服务中补充的,每次我想要获取约会列表甚至只是一个约会时都获取所有这些信息似乎是不切实际的。

我一定做错了,ClientEmployeeService 本身就是聚合根,具有自己的类似存储库的接口,因为它们都可以单独存在。

将聚合的IIdentity 保留在Appointment 聚合根中并在需要时单独加载它们是否是一个想法(例如ClientIdEmployeeIdServiceId)?

我发现这是我第一次涉足 DDD 时非常常见的问题。

感谢大家的帮助

【问题讨论】:

  • 您应该阅读 Vaughn Vernon 的“有效聚合设计”。
  • 有趣的是你应该提到我已经下载了 PDF

标签: c# domain-driven-design aggregate


【解决方案1】:

聚合规则是不能从聚合根外部访问属于聚合的任何内容。如果您的聚合中有 ClientEmployeeService 部分,则您违反了此规则。

最好只为这些实体提供一个 ID 并分解您的聚合,这样它们就不会相互干扰。

【讨论】:

  • 这是一个很好的规则,所以每当我的聚合根需要引用另一个聚合根时,它应该只是它们的身份?
  • 一般来说是的,尽管你应该尽量减少聚合根之间的依赖关系。
  • 我尝试用尽可能少的信息来构建我的聚合,但仍然适合业务模型。在这种情况下,据我所知,我有绝对最小值(聚合根替换为身份)。谢谢你:)
猜你喜欢
  • 1970-01-01
  • 2020-10-19
  • 2016-06-28
  • 1970-01-01
  • 1970-01-01
  • 2017-05-25
  • 2016-03-21
  • 1970-01-01
  • 2011-02-07
相关资源
最近更新 更多