CQRS验证和唯一性

Joh*_*ohn 7 c# validation cqrs

在我的CQRS架构中,我想验证当我发送一个InsertSettingCommand(设置是一个键/值对象)时,我想检查我的数据库中是否存在该键.如果我很好地理解CQRS和验证,它说只有当验证某些格式化内容(例如检查电子邮件是否遵循某些语法或客户的名称是否为空)时,才应在客户端执行验证.但在我的情况下,我需要查询我的数据库以查看它是否存在,但我不知道在客户端查询我的读取存储是否正确?或者我应该在我的域名中调用我的阅读商店?然后抛出一个InsertSettingDuplicated事件?

那么在CQRS环境中我最好的方法是什么呢?有人谈论补偿行动吗?它能帮助我吗?

谢谢.

xel*_*ion 9

可以从客户端进行查询以读取存储空间以验证唯一性.以下是 Greg Young关于使用CQRS进行基于集合验证的一些想法.


And*_*ich 4

  1. 如果您需要修复一些会破坏读/写存储的错误命令,请使用“补偿操作”。
  2. 毫无疑问,在发送命令之前使用读取存储来验证某些内容是正确的,以便发送有效的命令。