Domain driven design 查找整个域中的聚合根使用情况

Domain driven design 查找整个域中的聚合根使用情况,domain-driven-design,Domain Driven Design,事实上,实体甚至值对象可能包含对聚合根的引用。 此外,根据定义,聚合根独立于它们自己,它们本质上有一个存储库,我最终无法删除该聚合根 作为我的GUI/工作流的一项要求,客户希望查看特定聚合根的引用位置,尤其是因为他希望/应该能够检查是否可以“安全地”删除该AR 我目前的设计只有从所讨论的实体到另一个AggregateRoot的导航,因此目前没有简单的方法来找到相反的方向 由于这肯定不是一个单一的情况,我想知道这通常是如何做到的 附录: 考虑下面的例子;我们有一个地址作为实体,还有一个包含日期和地

事实上,实体甚至值对象可能包含对聚合根的引用。 此外,根据定义,聚合根独立于它们自己,它们本质上有一个存储库,我最终无法删除该聚合根

作为我的GUI/工作流的一项要求,客户希望查看特定聚合根的引用位置,尤其是因为他希望/应该能够检查是否可以“安全地”删除该AR

我目前的设计只有从所讨论的实体到另一个AggregateRoot的导航,因此目前没有简单的方法来找到相反的方向

由于这肯定不是一个单一的情况,我想知道这通常是如何做到的

附录:

考虑下面的例子;我们有一个
地址
作为实体,还有一个包含
日期
地址
的值对象
HomeVisit
(为了简单起见)。 到目前为止,建模不需要能够从
地址
导航到
家庭访问
,因为通常不鼓励双向关联。 但您现在应该可以看到这个用例:出于任何原因,我可能需要在删除或修改
地址之前找出该地址当前使用的位置(可能是服务技术人员正在前往该地址的路上,我需要知道这一点)


你可以争辩说,在这些情况下,必须有一个服务或类似的服务才能找到答案,但想象一下,有一个第三方模块带来了
家访
VO,并以某种方式匿名使用
地址
;至少这是我希望它实现的方式。

答案似乎是:通过域或应用程序服务,必要时涉及相应的存储库

因此,对引用的检查必须使用AddressService进行硬编码,其方法类似于
deleteAddressByIdentifier
。然后,该方法需要检查或调用一个方法
isTechnicianOnWayToAddress()
,该方法再次相应地查询存储库;或者实现目标所需的任何东西