我目前正在开发我的第一个更大的 DDD 应用程序。目前它运行得很好,但我们从早期就陷入了一个我无法停止思考的问题:
在我们的一些聚合中,我们保留对另一个聚合根的引用,这对于整个应用程序非常重要(基于它们的 ID,因此没有硬引用 - 删除也是基于事件/最终一致性)。现在,当我们创建新实体“Entity1”时,我们发送一个新的 CreateEntity1Command,其中包含引用的聚合根的 ID。
现在我如何检查这个引用的 ID 是否有效?现在我们通过读取其他聚合来检查它(不修改那里的任何内容) - 但这种方法不知何故感觉很脏。我只想“信任”这些命令,因为无法手动输入 ID,而必须选择 ID。问题是,我们的应用程序是一个 Web 应用程序,信任您在那里获得的用户输入并不真正安全(即使公众无法访问它)。
我是否忽略了这个问题的任何可能的解决方案,或者我应该忽略需要有更好的解决方案的感觉?