通过事件采购确认消息框?

时间:2011-07-25 07:21:51

标签: c# cqrs event-sourcing

在CQRS中,事件源是我们唯一真正的信息来源,永远不会信任您的读取数据模型,那么如果我需要显示一个确认消息框,例如“用户X的最后10个动作”,那么应该是什么样的approch用吗?

1 - 发送命令查询我的聚合的最后10个动作,然后聚合发布我在UI中处理的包含用户动作的10个事件?

2 - 或者简单地说,查询我的Read模型?

CQRS在我的案例中说了什么?

谢谢你们。

John SMITH

1 个答案:

答案 0 :(得分:1)

永远不要相信您的读取模型并不意味着您需要从写入数据库中读取数据。这意味着您的读取模型中的数据可能会变得无效。在这种情况下,您应该在事件处理程序中进行一些修复,因为您只信任从事件中写入数据库重建读取数据库(写入数据库)。

简单的规则(至少我遵守这些规则):

  1. 始终从读取数据库中读取数据。
  2. 只有在将事件应用于AR之前需要验证某些内容以及何时需要重播事件时,您才能访问聚合根(在您的域中应该只有一种方法可以访问AR - GetById)。
  3. 在您的示例中,一切都很简单:处理用户AR消息并以格式存储事件(您应该映射来自事件的数据,而不仅仅是存储事件)用户需要(nosql数据库中的嵌套集合)或单独的表中sql数据库的情况。