2

“在对事件数据发出查询之前,Marten 确实需要知道事件类型是什么”

但我做的例子

session.Events.FetchStream(streamId)

session.Events.Load<MembersJoined>() 

他们工作正常

谢谢

4

1 回答 1

0

我发现,在实践中,如果您的应用程序在读取任何流之前向 Marten 提交事件,则您不必注册任何事件。

但是,如果您在提交任何内容之前结束了读取流,则需要先配置您的事件。我的应用程序在接受输入之前有条件地在启动时重建投影,因此最终导致了这个问题。

如何为您的活动配置 Marten

配置 Marten 时,传入IEnumerable<Type>所有事件类型中的一个。例如,我的注册如下所示:

cfg.Events.AddEventTypes(
    typeof(EventBase)
        .Assembly
        .GetTypes()
        .Where(typeof(EventBase).IsAssignableFrom)
);

我建议为所有事件使用基类,因为它使这样的事情变得超级简单。

为 Marten 配置了这些事件后,您现在可以根据需要自由查询流。

于 2020-06-18T01:52:43.080 回答