2011-03-29 2 views
17

j'ai pu exécuter avec succès un test simple pour RavenDB basé sur le code à l'adresse: http://ravendb.net/tutorials/hello-world« Impossible de trouver le type de stockage transactionnel » erreur avec intégré RavenDB

Ensuite, j'ai essayé de l'exécuter d'une manière intégrée, mais Je continue à obtenir l'erreur suivante:

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 

Configuration:

cadre cible est .NET Framework 4

J'ai ajouté les références suivantes à mon projet:

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

Le code est:

 
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); 

      } 
     } 

    } 
} 

J'ai essayé de chercher cela depuis quelques jours et essayé quelques variations différentes aussi. Je ne suis pas sûr de ce qui se passe.

+0

Est-ce que vous postez ici? http://groups.google.com/group/ravendb/topics –

+0

Non, mais je publierai également –

+0

309 peut avoir un problème. –

Répondre

16

Merci à Ayende Rahien sur groups.google.com/group/ravendb/topics.

La solution consistait à ajouter la référence "Raven.Storage.Esent" au projet principal. C'est un problème avec Visual Studio et les références indirectes.

Merci @Derek pour avoir suggéré que je poste là.

- Pranav

+0

Il semble qu'une référence à Raven.Storage.Esent doit être ajoutée au testproject testant une classe qui publie un documenttore. J'ai eu le même problème en écrivant mon premier test pour commencer à jouer avec le corbeau. –

+0

Quelqu'un sait ce qui cause cela? Existe-t-il un travail de sorte qu'il n'a pas besoin d'être ajouté à l'autre projet? – CamHart

5

Vous devez ajouter une référence à Raven.Storage.Esent.dll

+0

Thnx, je ne sais pas pourquoi il n'a pas été inclus la première fois, car il était déjà référencé dans le projet, mais j'ai fait une nouvelle publication et maintenant tout le nécessaire était là. –

Questions connexes