“在对事件数据发出查询之前,Marten 确实需要知道事件类型是什么”
但我做的例子
session.Events.FetchStream(streamId)
和
session.Events.Load<MembersJoined>()
他们工作正常
谢谢
“在对事件数据发出查询之前,Marten 确实需要知道事件类型是什么”
但我做的例子
session.Events.FetchStream(streamId)
和
session.Events.Load<MembersJoined>()
他们工作正常
谢谢
我发现,在实践中,如果您的应用程序在读取任何流之前向 Marten 提交事件,则您不必注册任何事件。
但是,如果您在提交任何内容之前结束了读取流,则需要先配置您的事件。我的应用程序在接受输入之前有条件地在启动时重建投影,因此最终导致了这个问题。
配置 Marten 时,传入IEnumerable<Type>所有事件类型中的一个。例如,我的注册如下所示:
cfg.Events.AddEventTypes(
typeof(EventBase)
.Assembly
.GetTypes()
.Where(typeof(EventBase).IsAssignableFrom)
);
我建议为所有事件使用基类,因为它使这样的事情变得超级简单。
为 Marten 配置了这些事件后,您现在可以根据需要自由查询流。