在域中查找聚合根用法

时间:2014-02-24 17:14:18

标签: domain-driven-design

事实上,实体甚至值对象可能包含对聚合根的引用。 此外,根据定义,聚合根独立存在,本质上是存储库,我最后不能删除聚合根。< / p>

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

我当前的设计只有从实体导航到其他AggregateRoot的导航,所以目前还没有找到相反方向的简单方法。

由于这肯定不是一个案例,我想知道这通常是怎么做的?

附录:

考虑以下示例;我们有一个Address作为实体,一个值对象 HomeVisit包含dateAddress address(仅适用于简单)。 到目前为止,没有建模需要能够从Address导航到HomeVisit,甚至更多,因为通常不鼓励双向关联。 但是您现在应该看到用例:出于任何原因,我可能需要能够在删除之前找出当前使用Address的位置,甚至可以修改它(也许服务技术人员目前正在使用它地址,我需要知道这一点。)

你可以争辩说,对于这些情况,必须有一个服务或类似的东西才能找到它,但想象有一个第三方模块带来了HomeVisit VO 以某种方式匿名使用Address;至少这是我希望它实现的方式。

1 个答案:

答案 0 :(得分:0)

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

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