Ошибки базы данных RavenDB в памяти: метод не найден: 'Raven.Json.Linq.RavenJObject - PullRequest
3 голосов
/ 11 ноября 2011

У меня проблемы с настройкой базы данных в памяти с помощью RavenDB.

Я получаю следующую ошибку: я получаю: SetUp: System.MissingMethodException: Метод не найден: 'Raven.Json.Linq.RavenJObject Raven.Abstractions.Extensions.JsonExtensions.ToJObject (Byte []) '

Полная трассировка ошибки:

SetUp : System.MissingMethodException :
    Method not found: 'Raven.Json.Linq.RavenJObject Raven.Abstractions.Extensions.JsonExtensions.ToJObject(Byte[])'. 
at Raven.Storage.Managed.DocumentsStorageActions.DeleteDocument(String key, Nullable1 etag, ref RavenJObject metadata) 
at Raven.Database.DocumentDatabase.<>c__DisplayClass4e.<Delete>b__48(IStorageActionsAccessor actions)
    in c:\Builds\raven\Raven.Database\DocumentDatabase.cs: line 518 
at Raven.Storage.Managed.TransactionalStorage.Batch(Action1 action)
    in c:\Builds\raven\Raven.Storage.Managed\TransactionalStorage.cs: line 112 
at Raven.Database.DocumentDatabase.Delete(String key, Nullable`1 etag, TransactionInformation transactionInformation)
    in c:\Builds\raven\Raven.Database\DocumentDatabase.cs: line 509
at Raven.Database.Backup.RemoveBackupDocumentStartupTask.Execute(DocumentDatabase database)
    in c:\Builds\raven\Raven.Database\Backup\RemoveBackupDocumentStartupTask.cs: line 17 
at Raven.Database.DocumentDatabase.ExecuteStartupTasks()
    in c:\Builds\raven\Raven.Database\DocumentDatabase.cs: line 214 
at Raven.Database.DocumentDatabase..ctor(InMemoryRavenConfiguration configuration)
    in c:\Builds\raven\Raven.Database\DocumentDatabase.cs: line 173 
at Raven.Client.Embedded.EmbeddableDocumentStore.InitializeInternal() 
at Raven.Client.Document.DocumentStore.Initialize()
    in c:\Builds\raven\Raven.Client.Lightweight\Document\DocumentStore.cs: line 484 
at Aqueduct.Dashboard.Web.Tests.RavenInMemoryDatabase.InMemoryDatabase.DocumentStore()
    in InMemoryDatabase.cs: line 27 
at Aqueduct.Dashboard.Web.Tests.MonitoringServiceTests.Setup()
    in MonitoringServiceTests.cs: line 24

Моя база данных InMemory определяется ниже:

public EmbeddableDocumentStore DocumentStore()
    {

        string path = Path.GetDirectoryName(Assembly.GetAssembly(typeof(InMemoryDatabase)).CodeBase);
        path = Path.Combine(path, "testing").Substring(6);

        var documentStore = new EmbeddableDocumentStore()
        {
            Configuration =
            {
                DataDirectory = path,
                RunInUnreliableYetFastModeThatIsNotSuitableForProduction = true,
                DefaultStorageTypeName = "munin",
                RunInMemory = true
            }
        };

        documentStore.Initialize();

        new RavenDocumentsByEntityName().Execute(documentStore);

        return documentStore;
    }

MyТест это:

 [TestFixture]
public class MonitoringServiceTests
{
    private IMonitoringService m_monitoringService;
    private PerformanceRepository m_performanceRepository;
    private InMemoryDatabase m_inMemoryDatabase;

    [TestFixtureSetUp]
    public void Setup()
    {
        m_inMemoryDatabase = new InMemoryDatabase();

        m_performanceRepository = new PerformanceRepository(m_inMemoryDatabase.DocumentStore().OpenSession());
        m_monitoringService = new MonitoringService(m_performanceRepository);
    }

    [Test]
    public void RecordSnapShot_RecordsCpuUsage()
    {
        m_monitoringService.RecordSnapShot();
        var allMeasurements = m_performanceRepository.GetAll();
        Assert.IsTrue(allMeasurements.Where(x => x.MeasurementType == MeasurementType.ProcessorUsage).Count() == 1);
    }
}

Ответы [ 2 ]

3 голосов
/ 11 ноября 2011

Возможно, у вас смешанные версии библиотек ravendb, единственное, что может вызвать эту ошибку

0 голосов
/ 11 ноября 2011

Измените создание documentStore на следующее и посмотрите, работает ли это:

var documentStore = new EmbeddableDocumentStore { RunInMemory = true }

Насколько я вижу, вы делаете действительно странные вещи при создании своего магазина.Почему вы хотите указать путь, когда хотите запустить в памяти?Даже если путь может быть относительным и чем-то простым, например «Данные».

Проверьте исходный код воронов, чтобы увидеть (надеюсь) множество рабочих тестов, использующих память в памяти.

...