事实上,实体甚至值对象可能包含对聚合根的引用。 此外,根据定义,聚合根独立存在,本质上是存储库,我最后不能删除聚合根。< / p>
作为我的GUI /工作流的一项要求,客户希望查看特定聚合根的引用位置,尤其是因为他希望/应该能够检查他是否可以“安全地”删除该AR。
我当前的设计只有从实体导航到其他AggregateRoot的导航,所以目前还没有找到相反方向的简单方法。
由于这肯定不是一个案例,我想知道这通常是怎么做的?
附录:
考虑以下示例;我们有一个Address
作为实体,一个值对象 HomeVisit
包含date
和Address address
(仅适用于简单)。
到目前为止,没有建模需要能够从Address
导航到HomeVisit
,甚至更多,因为通常不鼓励双向关联。
但是您现在应该看到用例:出于任何原因,我可能需要能够在删除之前找出当前使用Address
的位置,甚至可以修改它(也许服务技术人员目前正在使用它地址,我需要知道这一点。)
你可以争辩说,对于这些情况,必须有一个服务或类似的东西才能找到它,但想象有一个第三方模块带来了HomeVisit
VO 以某种方式匿名使用Address
;至少这是我希望它实现的方式。
答案 0 :(得分:0)
似乎答案是:通过域或应用程序服务,涉及各自的存储库,但必要。
因此,对引用的检查必须使用AddressService进行硬编码,并使用类似deleteAddressByIdentifier
的方法。然后,此方法需要检查或调用方法isTechnicianOnWayToAddress()
,该方法再次相应地查询存储库;或实现目标所需的一切。