tra*_*max 6 c# dependency-injection object-composition event-sourcing neventstore
我正在将NEventStore添加到我现有的项目中,而我正在使用DI.
我想要一个CommonDomain.Persistence.EventStore.IRepository
注入我的MVC控制器的实例.这个接口的唯一实现是EventStoreRepository
.
这个类依赖于IConstructAggregates
和我发现唯一实现是AggregateFactory
被标记为内部的,位于测试项目,具有非常古怪的文件名.
我不应该使用IRepository
?(为什么它被标记为公共而不被任何内部代码消耗?)
我在这里查看示例项目并IRepository
用于操作聚合.
或者我应该自己实施IConstructAggregates
?
小智 3
我正在为同样的事情而苦苦挣扎,我认为简短的答案是:
如果您不使用快照,测试项目中的实现将会正常工作。事实上,如果您获得了快照,我会添加一些代码来引发异常。
如果您使用快照,则必须使用类似于此处描述的方法末尾的方法:http ://williamverdolini.github.io/2014/08/20/cqrses-neventstore-snapshots/
本质上,问题在于您从 IConstructAggregates 返回的对象将从紧随传入的快照之后的版本开始重播事件流。
只是猜测,但我认为这可能没有在 CommonDomain 中“正式”实现的原因是:
如果您有支持快照的聚合,那么GetSnapshot()
无论如何您都必须在它们上实现,并且您希望构建一个IConstructAggregates
可以以某种方式重新水合这些聚合的实现(也许是一个ISupportSnapshots
接口?)
您可能希望使用 DI 容器来构建聚合,而不仅仅是Activator.CreateInstance<T>()
.
看起来这里的代码片段使用与AggregateFactory
测试项目相同的逻辑:-http: //pastebin.com/cFESMiTz
归档时间: |
|
查看次数: |
357 次 |
最近记录: |