c# nosql embedding ravendb document-database

c# - Error "No se pudo encontrar el tipo de almacenamiento transaccional" con RavenDB incorporado



nosql embedding (2)

Es necesario agregar una referencia a Raven.Storage.Esent.dll

Pude ejecutar con éxito una prueba simple para RavenDB basada en el código encontrado en: http://ravendb.net/tutorials/hello-world

Luego traté de ejecutarlo de una manera incrustada, pero sigo recibiendo el siguiente error:

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

Preparar:

El marco de destino es .NET Framework 4

Agregué las siguientes referencias a mi proyecto:

  1. / RavenDB-Build-309 / EmbeddedClient / Raven.Client.Embedded.dll
  2. / RavenDB-Build-309 / Client / Raven.Client.Lightweight.dll
  3. / RavenDB-Build-309 / EmbeddedClient / Raven.Storage.Esent.dll
  4. / RavenDB-Build-309 / EmbeddedClient / Raven.Storage.Managed.dll

El código es:

namespace Tests.RavenEmbedded { using Raven.Client.Client; using Raven.Client.Document; using Raven.Storage.Esent; using Raven.Storage.Managed; using Tests.RavenData; class 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 Write Data using (var session = store.OpenSession()) { var product = new Product { Cost = 3.99m, Name = "Milk", }; session.Store(product); session.SaveChanges(); session.Store(new Order { Customer = "customers/ayende", OrderLines = { new OrderLine { ProductId = product.Id, Quantity = 3 }, } }); session.SaveChanges(); } #endregion #region Read Data using (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 } } } namespace Tests { public class TestRavenDB { public static void Basics() { try { //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); } } } }

He intentado buscar esto durante unos días y también he intentado algunas variaciones diferentes. No estoy seguro de lo que está pasando.


Gracias a Ayende Rahien en groups.google.com/group/ravendb/topics.

La solución fue agregar la referencia "Raven.Storage.Esent" al proyecto principal. Es un problema con Visual Studio y referencias indirectas.

Gracias a Derek por sugerirme que publique allí.

- Pranav