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