【发布时间】:2020-03-05 13:58:14
【问题描述】:
我有一个问题,关于在有界上下文中验证实体是否存在时的最佳做法是什么。这甚至是 DDD 中的有效方法吗? BC 本质上应该是自包含的部署(即您不应该依赖另一个可能不可用的 BC)。
我的项目中有 2 BC - 成分和食谱。该企业销售散装原料,但也销售使用所述原料的预配置食谱。现在这些都是单独的 BC,每个都有自己的成分实体。
Recipe 是一个聚合根,它有一个成分列表的子实体。在将一种成分添加到 Recipe BC 中的成分列表之前验证该成分是否存在于 Ingredient BC 中是否有意义?
成分只能通过将发布事件的成分 BC 进行修改,并且配方 BC 将订阅并更新其自己的成分以进行任何更改(即价格/名称)。为了使其有效,该成分必须是有效的。那么如何保持这些 BC 之间的一致性呢?我是否将域服务注入到配方 BC 中并在添加之前验证成分是否存在?我也在使用 CQRS,因此我可以将服务直接注入处理程序而不是工厂来创建食谱(或者这是否是使用域服务的正确方法?)。
有点迷失了,如果这是一个有效的问题。
【问题讨论】: