在 CQRS 模式中的命令处理程序中查询数据库

Query database in Command handler within CQRS pattern

我正在开发基于使用 CQRS 的 CleanArchitecture 模板的应用程序。 我读到的关于 CQRS 的内容是读和写是分开的。 这是否意味着我应该避免在命令处理程序中查询数据库? 例如在 UpdateCommandHandler 中,我需要先获取记录然后更新它。

如果您打算使用 CQRS,您应该查看事件源 - 它大大简化了这一过程。使用事件溯源方法,您只需编写包含新数据的事件,而不必更新任何内容。因此不会有读取。

如果查询端需要知道数据的当前状态,那么它会汇总与该数据相关的所有事件,'sum' 它们会找到当前状态,并报告该状态。这是一种类似于簿记的方法,人们已经实践了几千年。