嵌入式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

我在项目中添加了以下引用:

  1. \ RavenDB – 建造 – 309 \ EmbeddedClient \ Raven.Client.Embedded.dll
  2. \ RavenDB – 建造 – 309 \客户端\ Raven.Client.Lightweight.dll
  3. \ RavenDB – 建造 – 309 \ EmbeddedClient \ Raven.Storage.Esent.dll
  4. \ 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的引用