我正在将NEventStore添加到我现有的项目中,并且使用DI。
我希望在我的MVC控制器中注入一个CommonDomain.Persistence.EventStore.IRepository实例。这个接口的The only implementation是EventStoreRepository。
这个类依赖于IConstructAggregates,only implementation I find是AggregateFactory,它被标记为内部,位于测试项目中,文件名非常奇怪。
我不应该使用IRepository吗?(为什么它被标记为公共的,并且没有被任何内部代码所使用?)
我正在查看用于操作聚合的示例项目here和IRepository。
或者我应该自己实现IConstructAggregates?
发布于 2014-11-22 00:46:42
我在为同样的事情而挣扎,我认为简单的答案是:
如果您不使用快照,测试项目中的实现将运行良好。实际上,如果给您快照,我会添加一些代码来抛出异常。
如果使用快照,则必须使用与下面描述的快照末尾类似的方法:http://williamverdolini.github.io/2014/08/20/cqrses-neventstore-snapshots/
本质上,问题是您将从IConstructAggregates返回的对象将在它上重放事件流,将在紧接在中传递的快照之后的版本开始。
只是猜测一下,但我认为在CommonDomain中可能没有“正式”实现的原因是:
GetSnapshot(),并且您可能希望构建一个IConstructAggregates实现,该实现可以以某种方式重新水合物(可能是ISupportSnapshots接口)。Activator.CreateInstance<T>()。这里的代码片段使用与测试项目中的AggregateFactory相同的逻辑:- http://pastebin.com/cFESMiTz
https://stackoverflow.com/questions/26834901
复制相似问题