【问题标题】:Objects composition of NEventStore components for DIDI 的 NEventStore 组件的对象组合
【发布时间】:2014-11-10 00:10:54
【问题描述】:

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

我想将CommonDomain.Persistence.EventStore.IRepository 的实例注入到我的 MVC 控制器中。这个接口的The only implementationEventStoreRepository
这个类依赖于IConstructAggregates,而only implementation I findAggregateFactory,标记为内部,位于测试项目中,文件名很奇怪。

我不应该使用IRepository吗? (为什么它被标记为公共而不被任何内部代码使用?)
我正在查看用于操作聚合的示例项目 hereIRepository

或者我应该自己实现IConstructAggregates

【问题讨论】:

    标签: c# dependency-injection event-sourcing object-composition neventstore


    【解决方案1】:

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

    如果您不使用快照,则测试项目中的实现可以正常工作。事实上,如果给你一个快照,我会添加一些代码来引发异常。

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

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

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

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

    看起来这里的这个 sn-p 代码使用了与测试项目中的 AggregateFactory 相同的逻辑: - http://pastebin.com/cFESMiTz

    【讨论】:

    • 我想我已经找到了这个类不被公开支持的原因:它似乎不完整并且没有经过适当的测试。我在使用这个存储库时遇到了一系列问题,并且已经提交了错误报告:github.com/NEventStore/NEventStore/issues/376
    • 不,我没有快照,但我认为无论如何我都必须避免这门课,因为我在使用它时遇到了重大问题-(
    • 我想我最终会使用 geteventstore.com 之类的东西,并使用 CommonDomain 项目的修改版本。我发现有些事情需要稍作调整才能适应我的情况。
    • 是的,我们决定不在生产环境中为新项目使用 NEventStore。不幸的是,问题太多了-(
    • 您是否考虑过使用类似:github.com/yreynhout/AggregateSource 的内容?它看起来比 CommonDomain 更经过深思熟虑。
    猜你喜欢
    • 2011-02-20
    • 1970-01-01
    • 2018-01-21
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    • 2018-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多