gpt4 book ai didi

domain-driven-design - CQRS/DDD : Checking referential integrity

转载 作者:行者123 更新时间:2023-12-01 23:09:41 26 4
gpt4 key购买 nike

命令处理程序是否也应该检查参照完整性?此常见问题解答建议您不要在聚合 ( http://cqrs.nu/Faq ) 中检查此项。不是检查某些东西是否存在验证的一部分吗?

例如,您可以拥有一个应用程序,您可以在其中向文章添加评论。

该命令将具有以下字段:

  • 身份证
  • 文章编号
  • 用户 ID
  • 正文

  • 对于这个例子,评论和文章是不同的聚合根。

    如果文章已经存在并且用户存在,您是否应该检查此示例?给不存在的文章加评论感觉有点奇怪。

    最佳答案

    我认为您有理由将文章和评论划分为单独的聚合根。当我遇到像你这样的问题时,通常表明有机会重新思考领域模型。

    参照完整性检查没有任何问题,但请考虑对不属于同一根的聚合进行更改的最终性质。验证结果说明什么?

    如果文章不存在,是不是因为没有添加并且您在命令中存在完整性问题?或者它可能已添加但尚未传播到应用程序的查询端?或者在用户发表评论之前它已经被删除了?

    如果验证确认文章存在怎么办?也许版主已将其删除,但结果尚未传播?

    请记住,当事件发生在同一聚合根下时,您只能依赖事件的顺序。

    总结一下:只要您意识到可能存在误报和漏报,您就可以在命令处理程序中验证参照完整性。如果您希望传入的命令经常具有不可靠的数据,则此验证可能会限制错误率。但是,如果一致性至关重要,请尝试重新考虑聚合的结构。

    关于domain-driven-design - CQRS/DDD : Checking referential integrity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45584675/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com