0

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

假设我已将客户信息分为两个表

客户 - 域数据库

活跃首选

Customer_读取数据库

姓名,

地址,

电话,

电子邮件

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

如果我了解 CQRS 实现(示例)客户域(已删除聚合根)应该发布有关地址更改的事件,该事件应该由多个处理程序处理以更新每个表。

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

先感谢您。

问候,

三月

更新 -

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

4

1 回答 1

1

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

这边走:

  • 如果没有变化 - 我们可以跳过发布事件
  • domain 不需要知道可能(或可能不)订阅他的事件的对象的任何信息。

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

于 2010-10-01T08:08:01.600 回答