Domain driven design 如何访问聚合根后面的实体?

Domain driven design 如何访问聚合根后面的实体?,domain-driven-design,Domain Driven Design,我进入DDD的第一周,有几个实体定义了聚合根 我了解到,聚合外部的任何外部实体都不能引用聚合中的实体,因此外部实体必须引用聚合根 好的,除非我对我的解决方案进行了错误的建模,否则我需要一个对聚合根后面的实体的引用。我如何处理这种情况,或者我必须重新设计我的域以避免这种情况 JD您可能可以改进您的模型。如果需要对聚合中的实体进行外部引用,则这是内部实体本身可能是聚合根的强烈指示 这当然是一般性的建议,因为我对你们的具体型号一无所知 关于聚合设计的好建议,请看一下这个。在第一部分“聚合的建模”中,他

我进入DDD的第一周,有几个实体定义了聚合根

我了解到,聚合外部的任何外部实体都不能引用聚合中的实体,因此外部实体必须引用聚合根

好的,除非我对我的解决方案进行了错误的建模,否则我需要一个对聚合根后面的实体的引用。我如何处理这种情况,或者我必须重新设计我的域以避免这种情况


JD

您可能可以改进您的模型。如果需要对聚合中的实体进行外部引用,则这是内部实体本身可能是聚合根的强烈指示

这当然是一般性的建议,因为我对你们的具体型号一无所知


关于聚合设计的好建议,请看一下这个。在第一部分“聚合的建模”中,他特别提到了聚合粒度,我觉得这很有启发性。

看到一些代码将有助于回答这个问题。感谢您的回复。我发现我开始把我的实体看作一个聚合根,然后我发现我有很多聚合根引用聚合根,我认为这很好,因为我很可能会使用存储库来访问它们。这听起来对吗?我不完全同意第一段。我发现“聚合id+本地(到聚合)实体id”可以与外部通信并在另一个聚合内跟踪。这不是一般性的建议,但可能会很有用。@Yves,谢谢你的推荐。如果我们有一个深图,而局部实体是几个深的对象呢?那么我将跟踪什么(所有条目对象ID)?正如Dennis所提到的,这需要根据聚合的实际情况来看待(cfr.白皮书)。如果您确实需要一个大的实体集群来保持一致,那么您可以将它们放在同一个聚合中(同样,高度上下文)。深度是一个结构性的问题,在本次讨论中,我不感兴趣。聚合负责跟踪强制一致性和未来行为所需的所有状态。我确实认为,如果你用一个例子来重新表述你的问题,给你合理的建议会容易得多。