6

NEventStore を既存のプロジェクトに追加し、DI を使用しています。

CommonDomain.Persistence.EventStore.IRepositoryのインスタンスをMVC コントローラーに挿入したいと考えています。このインターフェイスの唯一の実装EventStoreRepository.
このクラスは依存してIConstructAggregatesおり、私が見つけた唯一の実装AggregateFactory、内部としてマークされ、テストプロジェクトにあり、非常に奇妙なファイル名を持つものです。

私は使用することになっていませんIRepositoryか?(パブリックとしてマークされ、内部コードによって消費されないのはなぜですか?)ここ
サンプル プロジェクトを探しており、集計の操作に使用されています。IRepository

それとも自分で実装する必要がありIConstructAggregatesますか?

4

1 に答える 1

3

私は同じことに苦労しています。短い答えは次のとおりだと思います。

スナップショットを使用していない場合、テスト プロジェクトでの実装は問題なく機能します。実際、スナップショットが与えられた場合に例外をスローするコードを追加します。

スナップショットを使用している場合は、ここで説明されているものの最後にあるものと同様のアプローチを使用する必要があります: http://williamverdolini.github.io/2014/08/20/cqrses-neventstore-snapshots/

基本的に、問題は、IConstructAggregates から返されるオブジェクトで、渡されたスナップショットの直後のバージョンからイベント ストリームが再生されることです。

単なる推測ですが、これが CommonDomain で「公式に」実装されていない理由は次のとおりだと思います。

  • スナップショットをサポートする集約がある場合は、とにかくそれらを実装する必要があり、何らかの形でそれらの集約を再水和できる実装GetSnapshot()を構築したいと思うでしょう(おそらくインターフェース?)IConstructAggregatesISupportSnapshots

  • DI コンテナーを使用して、単にActivator.CreateInstance<T>().

このコードのスニペットはAggregateFactory、テスト プロジェクトと同じロジックを使用しているようです: - http://pastebin.com/cFESMiTz

于 2014-11-22T00:46:42.453 に答える