我有Customer
读取模型需要在NewOrderEvent
之后更新。
我想了解一件事,我应该在每个事件上更新我的阅读模型。或者我需要重播所有事件并替换读取模型。
我现在正在做的是:
NewOrderEvent
Customer
阅读模型Customer.ApplyEvent(NewOrderEvent)
状态的Customer
。 Customer
阅读模型我错过了什么吗?
答案 0 :(得分:8)
通常是的,您希望每次有事件时都更新读取模型。但是,它只是一个简单的CRUD操作,一个db更新。当您想要(重新)生成新的读取模型时,事件的重放就完成了,因为您可能有数百万个事件,并且可能是一个非常长时间运行的操作。
顺便说一句,应该只为命令模型保留应用内容,以避免混淆。您将事件应用于域聚合根(实体),但您使用事件作为读取模型更新的数据源。
答案 1 :(得分:1)
对我来说很好看。您可以决定重播事件流,以便仅在您向其中引入新内容时才重新创建读取模型。
有些人会在架构更改时重建读取模型,但在许多情况下,您可以使用迁移。真的取决于你的申请。