C# 用于DI的NEventStore组件的对象组成
我正在将NEventStore添加到我现有的项目中,并使用DI 我想将C# 用于DI的NEventStore组件的对象组成,c#,dependency-injection,event-sourcing,object-composition,neventstore,C#,Dependency Injection,Event Sourcing,Object Composition,Neventstore,我正在将NEventStore添加到我现有的项目中,并使用DI 我想将CommonDomain.Persistence.EventStore.IRepository的实例注入我的MVC控制器。此界面的名称为EventStoreRepository 该类依赖于IConstructAggregates和isAggregateFactory,它标记为内部,位于测试项目中,具有非常奇怪的文件名 我不应该使用IRepository?(为什么它被标记为公共代码而不被任何内部代码使用? 我正在查看用于处理聚合
CommonDomain.Persistence.EventStore.IRepository的实例注入我的MVC控制器。此界面的名称为EventStoreRepository
该类依赖于IConstructAggregates
和isAggregateFactory
,它标记为内部,位于测试项目中,具有非常奇怪的文件名
我不应该使用IRepository
?(为什么它被标记为公共代码而不被任何内部代码使用?
我正在查看用于处理聚合的示例项目和IRepository
或者我应该自己实现IConstructAggregates
吗?我也在努力解决同样的问题,我认为简单的答案是:
如果您不使用快照,那么测试项目中的实现可以正常工作。事实上,如果给您一个快照,我会添加一些代码来抛出异常
如果您使用的是快照,则必须使用类似于本文末尾所述方法的方法:
本质上,问题在于从IConstructAggregates返回的对象将从传入的快照之后的版本开始在其上回放事件流
只是一个猜测,但我认为这可能不会在CommonDomain中“正式”实施的原因是:
- 如果您有支持快照的聚合,您必须在它们上实现
GetSnapshot()
,并且您希望构建一个IConstructAggregates
实现,以某种方式重新水合这些聚合(可能是ISupportSnapshots
接口?)
- 您可能希望使用DI容器来构建聚合,而不仅仅是
Activator.CreateInstance()
看起来这里的代码片段使用的逻辑与测试项目中的AggregateFactory
相同:
-我想我已经找到了这个类不被公开支持的原因:它似乎不完整,也没有经过适当的测试。我在这个存储库中遇到了一系列问题,并且已经提交了一份错误报告:没有,没有快照,但是我想我无论如何都必须避免使用这个类,因为我在使用它时遇到了一些重大问题-(我想我最终会使用geteventstore.com之类的东西,并使用CommonDomain项目的修改版本。我发现有一些东西需要进行一些调整,以适应我的情况。是的,我们决定在新项目的生产中不使用NEventStore。不幸的是,问题太多了-(您是否考虑过使用类似于:?它看起来比CommonDomain经过深思熟虑更好。