嵌入式RavenDB“无法找到事务存储类型”错误
我能够根据以下代码成功运行RavenDB的简单测试: http ://ravendb.net/tutorials/hello-world
接下来我尝试以嵌入式方式运行它,但我继续收到以下错误:
Message: Could not find transactional storage type: Raven.Storage.Esent.TransactionalStorage, Raven.Storage.Esent StackTrace: at Raven.Database.Config.InMemoryRavenConfiguration.CreateTransactionalStorage(Action notifyAboutWork) in c:\Builds\raven\Raven.Database\Config\InMemoryRavenConfiguration.cs:line 272 at Raven.Database.DocumentDatabase..ctor(InMemoryRavenConfiguration configuration) in c:\Builds\raven\Raven.Database\DocumentDatabase.cs:line 109 at Raven.Client.Client.EmbeddableDocumentStore.InitializeInternal() in c:\Builds\raven\Raven.Client.Embedded\EmbeddableDocumentStore.cs:line 130 at Raven.Client.Document.DocumentStore.Initialize() in c:\Builds\raven\Raven.Client.Lightweight\Document\DocumentStore.cs:line 388 at Tests.RavenEmbedded.RavenDB..ctor() in C:\Users\Pranav\Documents\Projects\Repositories-Clone\Common-clone\Tests\RavenDB.cs:line 114 at Tests.TestRavenDB.Basics() in C:\Users\Pranav\Documents\Projects\Repositories-Clone\Common-clone\Tests\RavenDB.cs:line 170
建立:
目标框架是.NET Framework 4
我在项目中添加了以下引用:
- \ RavenDB – 建造 – 309 \ EmbeddedClient \ Raven.Client.Embedded.dll
- \ RavenDB – 建造 – 309 \客户端\ Raven.Client.Lightweight.dll
- \ RavenDB – 建造 – 309 \ EmbeddedClient \ Raven.Storage.Esent.dll
- \ RavenDB – 建造 – 309 \ EmbeddedClient \ Raven.Storage.Managed.dll
代码是:
namespace Tests.RavenEmbedded { 使用Raven.Client.Client; 使用Raven.Client.Document; 使用Raven.Storage.Esent; 使用Raven.Storage.Managed; 使用Tests.RavenData; RavenDB类 { public RavenDB() { // EmbeddableDocumentStore store = new EmbeddableDocumentStore {DataDirectory = @“C:\ Temp \ RavenData”}; //Raven.Storage.Esent.TransactionalStorage var store = new EmbeddableDocumentStore {DataDirectory = @“C:\ Temp \ RavenData”}; store.Initialize(); #region写入数据 使用(var session = store.OpenSession()) { var product =新产品 { 费用= 3.99米, 名称=“牛奶”, }; session.Store(产品); session.SaveChanges(); session.Store(新订单 { 客户=“customers / ayende”, OrderLines = { 新的OrderLine { ProductId = product.Id, 数量= 3 }, } }); session.SaveChanges(); } #endregion #region读取数据 使用(var session = store.OpenSession()) { var order = session.Load(“orders / 1”); Debug.Print(“Customer:{0}”,order.Customer); foreach(var orderLine in order.OrderLines) { Debug.Print(“Product:{0} x {1}”,orderLine.ProductId,orderLine.Quantity); } session.SaveChanges(); } #endregion } } } 命名空间测试 { 公共类TestRavenDB { public static void Basics() { 尝试 { // var db = new RavenClientServer.RavenDB(); var db = new RavenEmbedded.RavenDB(); } catch(Exception ex) { Debug.Print(“Message:{0}”,ex.Message); Debug.Print(“StackTrace:{0}”,ex.StackTrace); } } } }
我已经尝试了几天搜索这个并尝试了一些不同的变化。 我不确定发生了什么。
感谢agende Rahien在groups.google.com/group/ravendb/topics上。
解决方案是将“Raven.Storage.Esent”引用添加到主项目中。 这是Visual Studio和间接引用的问题。
谢谢@Derek建议我发布那里。
– Pranav
您需要添加对Raven.Storage.Esent.dll的引用