我有Customer
读取模型,需要在NewOrderEvent
后更新。
我想了解的一件事是,我应该在每个事件上更新我的读取模型。或者我需要重播所有事件并替换读取模型。
我现在做的是:
- 节省
NewOrderEvent
- 获取或创建
Customer
读取模型 - 调用更改
Customer
状态的Customer.ApplyEvent(NewOrderEvent)
。 - 保存
Customer
读取模型
我错过了什么吗?
通常是的,您希望每次有事件时更新读取模型。但是,这只是一个简单的 CRUD 操作,一个数据库更新。当您想要(重新)生成新的读取模型时,会完成事件的重播,因为您可能有数百万个事件,并且可能是一个非常长时间运行的操作。
顺便说一句,应用内容应仅保留用于命令模型,以避免混淆。将事件应用于域聚合根(实体),但使用事件作为读取模型更新的数据源。
看起来不错。您可能决定重播事件流,以便仅在引入新内容时才重新创建读取模型。
每当架构更改时,有些人都会重建读取模型,但在许多情况下,您可以使用迁移来实现此目的。实际上取决于您的应用程序。