Cqrs 如何处理CQR中的外键读取端故障?

Cqrs 如何处理CQR中的外键读取端故障?,cqrs,Cqrs,您的SQL数据模型中有表A和表B,表A有一个指向表B的外键。现在您希望将CRUD体系结构迁移到CQR。想象一下以下场景: 您将收到一个命令,用于持久化 写入附加日志并处理它以更新状态 读取端拾取它,但无法插入数据库 在这种情况下,您的写端和读端永远不会达到一致性。如何处理CQR中的读取端约束?验证应该在写端进行吗?我相信您可以从中得到一些启示: 简而言之,新的A聚合需要由另一个聚合创建,比如说C创建者。在本例中,C持有一个a的所有ID的列表,因此可以在聚合级别而不是视图模型上进行检查 如果您的问

您的SQL数据模型中有表A和表B,表A有一个指向表B的外键。现在您希望将CRUD体系结构迁移到CQR。想象一下以下场景:

您将收到一个命令,用于持久化 写入附加日志并处理它以更新状态 读取端拾取它,但无法插入数据库
在这种情况下,您的写端和读端永远不会达到一致性。如何处理CQR中的读取端约束?验证应该在写端进行吗?

我相信您可以从中得到一些启示:

简而言之,新的A聚合需要由另一个聚合创建,比如说C创建者。在本例中,C持有一个a的所有ID的列表,因此可以在聚合级别而不是视图模型上进行检查

如果您的问题更一般,并且您询问如何处理视图模型更新失败,那么这实际上取决于。这可能是一个设计问题,例如事件顺序不正确、缺少前置条件或不变检查、错误或其他。我通常会锁定这些实体,并将它们发送到需要手动干预的实体列表中(如果没有自动补救措施)