我正在评估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