2011-03-29 18 views
17

yo era capaz de ejecutar con éxito una prueba simple para RavenDB basado en el código que se encuentra en: http://ravendb.net/tutorials/hello-world"No se pudo encontrar el tipo transaccional de almacenamiento" error con RavenDB incrustado

Después probé para ejecutarlo en un Manner Embedded, 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 

Configuración:

marco de destino es Framework 4

he añadido las siguientes referencias a mi proyecto:

  1. \ RavenDB-Build-309 \ EmbeddedClient \ Raven.Client.Embedded.dll
  2. \ RavenDB-Generar- 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 para esto durante unos días y probado algunas variaciones diferentes también. No estoy seguro de lo que está pasando.

+0

¿Ha puesto aquí? http://groups.google.com/group/ravendb/topics –

+0

No, pero también publicaré allí –

+0

309 puede tener un problema. –

Respuesta

16

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 @Derek por sugerir que publique allí.

- Pranav

+0

incrustado. Parece que se debe agregar una referencia a Raven.Storage.Esent al proyecto de prueba que prueba una clase que almacena las noticias en un almacén de documentos. Tuve el mismo problema al escribir mi primera prueba para comenzar a jugar con Raven. –

+0

¿Alguien sabe qué causa esto? ¿Hay algún problema para que no sea necesario agregarlo al otro proyecto? – CamHart

5

Es necesario añadir una referencia a Raven.Storage.Esent.dll

+0

Thnx, no sé por qué no se incluyó la primera vez, como ya se hizo referencia en el proyecto, pero hice una nueva publicación y ahora todo lo que necesitaba estaba allí. –

Cuestiones relacionadas