我是CQRS的新手,并且对命令如何将地址更改写入客户对象感到困惑
让我们说我已将客户信息分成两个表
客户 - 域数据库
有效 优选
Customer_Read数据库
名称,
地址,
电话,
电子邮件
用户修改客户的地址。地址字段都在读取数据库中。 可能有3个或更多查询友好表保留地址信息。
如果我理解CQRS实现(示例),Customer Domain(已删除的Aggregate root)应该发布有关地址更改的事件,应由多个处理程序处理以更新每个表。
当我不改变客户对象的状态时,如何实现这一点? 域名必须知道它在另一个数据库中有地址吗?
提前谢谢。
此致
The Mar
更新 -
在网上浏览更多帖子之后,我假设如果状态未被命令更改,则不会生成事件以保存域本身,但会应用事件来更改查询/视图模型中的地址友好的桌子。
答案 0 :(得分:0)
您仍需要在写入持久性中的某处保留一些域数据。这样地址就存储在这个持久性存储中,事件在更改后发布。
这样:
此逻辑适用于关系数据库中的持久性(例如,带有NHibernate的MS SQL)和事件源代码方法。