gpt4 book ai didi

c# - 用于 DI 的 NEventStore 组件的对象组合

转载 作者:太空狗 更新时间:2023-10-29 21:50:03 26 4
gpt4 key购买 nike

我正在将 NEventStore 添加到我现有的项目中,并且我正在使用 DI。

我想将 CommonDomain.Persistence.EventStore.IRepository 的实例注入(inject)到我的 MVC Controller 中。 The only implementation这个接口(interface)是EventStoreRepository
此类取决于 IConstructAggregatesonly implementation I find是标记为内部的 AggregateFactory,位于测试项目中,文件名非常奇怪。

我不应该使用 IRepository 吗? (为什么它被标记为公共(public)的并且没有被任何内部代码使用?)
我正在寻找示例项目 hereIRepository 用于操作聚合。

或者我应该自己实现 IConstructAggregates 吗?

最佳答案

我也在为同样的事情苦苦挣扎,我认为简短的回答是:

如果您不使用快照,那么在测试项目中的实现会工作正常。事实上,如果您获得快照,我会添加一些代码来抛出异常。

如果您正在使用快照,则必须使用类似于此处描述的方法末尾的方法:http://williamverdolini.github.io/2014/08/20/cqrses-neventstore-snapshots/

本质上,问题是您从 IConstructAggregates 返回的对象将在其上重播事件流从传入的快照之后的版本开始

只是一个猜测,但我认为这可能没有在 CommonDomain 中“正式”实现的原因是:

  • 如果您有支持快照的聚合,则必须实现 GetSnapshot()无论如何,你会想要建立一个 IConstructAggregates可以以某种方式重新水合这些聚合的实现(可能是 ISupportSnapshots 接口(interface)?)

  • 您可能希望使用 DI 容器来构建聚合,而不仅仅是 Activator.CreateInstance<T>() .

看起来这段代码使用与 AggregateFactory 相同的逻辑来自测试项目:- http://pastebin.com/cFESMiTz

关于c# - 用于 DI 的 NEventStore 组件的对象组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26834901/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com