3

我正在设计域模型,但有些东西似乎不太好。

我从一个主要的聚合开始。它引用了其他聚合,而那些其他聚合也引用了更多聚合。我可以从主聚合开始遍历洞域模型。

我看到的问题是我将在内存中保存所有聚合实例。

这是一个好的设计吗?我可以通过延迟加载来解决内存问题,但我认为我有更深层次的问题。

我有另一个关于聚合引用的问题。我应该懒惰地加载对其他聚合的引用吗?如果是这种情况,我几乎不会使用他们的存储库。那样可以么?

4

1 回答 1

4

在聚合根 (AR) 之间直接引用可能会导致延迟加载无法解决的问题。此外,它强制所有连接的 AR 位于同一个数据库中,这使得推理和执行不变量变得更加困难,而这首先是 AR 的主要目的。最好限制或消除 AR 之间的直接引用。Vaughn Vernon的一系列文章是学习聚合设计的重要资源. 基本理念是让您的 AR 精益求精并专注于所有功能,同时牢记它们的功能 - 执行业务约束并围绕根实体建立边界。如果一个 AR 需要来自另一个 AR 的数据来执行其工作,则该数据可以由应用程序服务通过存储库提供给它。此外,如果仅需要引用来满足 UI 要求,则考虑使用读取模型模式

于 2012-07-24T18:58:38.340 回答