JOliverのEventStoreライブラリを評価しています。特に、EventStoreの永続化エンジンとしてRavenDBを使用しようとしています。EventStoreにはこのためのプラグインが付属しています。注:データベースは空で、インデックスはありません(デフォルト以外)。
店舗の配線には、以下を使用しました。
var store = Wireup.Init()
.UsingRavenPersistence("EventStore", new DocumentObjectSerializer())
.Build();
ただし、プログラムを実行すると、「RavenCommitByRevisionRange」インデックスが見つからなかったことを示す例外が発生します。
EventStoreコードを掘り下げると、RavenPersistenceEngineが初期化されていないことが問題だと思います。初期化コードは、必要なインデックスをRavenDBサーバーにインストールします。
SQLサーバー側では、サンプルプロジェクトの配線コードに、「InitializeStorageEngine」という拡張メソッドの呼び出しが示されていることに気付きました。この拡張メソッドは、クラス「PersistenceWireup」に関連付けられています。ただし、RavenDB永続性をワイヤリングするために使用している拡張メソッドは、クラス「Wireup」を返します。そこで、ワイヤーアップコードの一部を新しいPersistenceWireupインスタンスにラップし、次のように「.InitializeStorageEngine()」を呼び出すことができました。
var store = new PersistenceWireup(
Wireup.Init()
.UsingRavenPersistence("EventStore", new DocumentObjectSerializer()))
.InitializeStorageEngine()
.Build();
これはうまくいきます!これで、RavenDBデータベースに必要なインデックスが含まれるようになりました。
だから...私の質問:「。UsingRavenPersistence(...)」は単に「Wireup」ではなく「PersistenceWireup」のインスタンスを返すべきではありませんか?または、EventStoreでRavenDBの永続性を接続するためのより良い方法はありますか?