CQRS命令和域状态

时间:2010-09-29 22:59:10

标签: cqrs

我是CQRS的新手,并且对命令如何将地址更改写入客户对象感到困惑

让我们说我已将客户信息分成两个表

客户 - 域数据库

有效 优选

Customer_Read数据库

名称,

地址,

电话,

电子邮件

用户修改客户的地址。地址字段都在读取数据库中。 可能有3个或更多查询友好表保留地址信息。

如果我理解CQRS实现(示例),Customer Domain(已删除的Aggregate root)应该发布有关地址更改的事件,应由多个处理程序处理以更新每个表。

当我不改变客户对象的状态时,如何实现这一点? 域名必须知道它在另一个数据库中有地址吗?

提前谢谢。

此致

The Mar

更新 -

在网上浏览更多帖子之后,我假设如果状态未被命令更改,则不会生成事件以保存域本身,但会应用事件来更改查询/视图模型中的地址友好的桌子。

1 个答案:

答案 0 :(得分:0)

您仍需要在写入持久性中的某处保留一些域数据。这样地址就存储在这个持久性存储中,事件在更改后发布。

这样:

  • 如果没有变化 - 我们可以跳过发布活动
  • 域名不需要了解可能(或可能不)订阅其活动的对象。

此逻辑适用于关系数据库中的持久性(例如,带有NHibernate的MS SQL)和事件源代码方法。