我正在評估JOliver's EventStore庫。特別是,我試圖使用RavenDB作爲EventStore的持久性引擎。 EventStore爲此提供了一個插件。注意:數據庫是空的,沒有索引(默認值除外)。使用RavenDB Persistence Plugin連接JOliver的EventStore
在接線,商店,我用下面的:
var store = Wireup.Init()
.UsingRavenPersistence("EventStore", new DocumentObjectSerializer())
.Build();
然而,當我運行我的程序,我得到一個異常,表示無法找到「RavenCommitByRevisionRange」指數。
在圍繞EventStore代碼挖,我覺得這個問題恰好是該RavenPersistenceEngine沒有被初始化。初始化代碼在RavenDB服務器中安裝所需的索引。
對事物的SQL服務器端,我注意到,在示例項目的配線代碼顯示了稱爲擴展方法的調用:「InitializeStorageEngine」。此擴展方法與類「PersistenceWireup」綁定。但是,我在RavenDB持久性中使用的擴展方法返回類「Wireup」。所以,我的包裹在一個新的PersistenceWireup比如我wireup代碼的一部分,並能夠稱之爲「.InitializeStorageEngine()」,例如:
var store = new PersistenceWireup(
Wireup.Init()
.UsingRavenPersistence("EventStore", new DocumentObjectSerializer()))
.InitializeStorageEngine()
.Build();
這個偉大的工程! RavenDB數據庫現在包含必要的索引。
所以......我的問題:不應該「.UsingRavenPersistence(......)」返回‘PersistenceWireup’,而不是簡單的‘Wireup’的實例?還是有更好的方法來連接EventStore中的RavenDB持久性?
感謝您的回答!我明白了Raven不需要序列化程序的含義。是的,我現在確實沒有派遣調度員,因爲我一次試圖將EventStore列出來。但肯定這是下一步。 – 2011-05-26 16:07:14
我已經更新了Raven連線代碼以返回一個PersistenceWireup實例。 – 2011-05-26 18:13:15
非常感謝! – 2011-05-31 04:24:54