【发布时间】:2022-10-23 21:53:41
【问题描述】:
我有一个问题,我找不到任何答案。场景看起来像,我有一个产品,它有几个字段,如名称、描述、imageLink 等。当我将它保存到事件存储并且当我想恢复聚合时,我有一个事件 ProductRegistered 与所有这些字段此事件来自事件存储并加载到聚合。当我进行更新时,我有另一个事件 ProductUpdated ,它还包含所有字段,但这是一个技巧,它只保存已修改的字段。问题是当我想修改聚合并删除或添加任何属性时,它会引发异常。所以我读到了它,解决方案是将这两个大事件拆分成更小的事件,我的问题是我应该如何拆分它?每个字段的事件。因为从端点用户可以传递 6 个值。
例如,当我注册产品时,我应该创建如下事件:ProductRegistered(仅使用产品 ID)、ProductNameChanged(使用产品名称)等等?
【问题讨论】:
-
你可以有类似
ProductPropertyChanged(string PropertyName, object oldValue, object newValue)的东西,而不是每个属性都有一个事件。 -
你能详细说明一下吗?
-
此外,
ProductChanged或ProductNameChanged不会告诉您任何有关初始意图的信息。询问此产品更改的原因,并在事件名称中明确说明。这将帮助您举办更多面向业务的活动,从业务角度来看,这些活动具有一定的意义。
标签: c# domain-driven-design event-sourcing