Как создать проводник RavenDB?

Я хотел бы написать свой собственный простой проводник RavenDB на рабочем столе, похожий на веб-интерфейс. Это для изучения Raven, в основном.

Итак, моя первая задача — прочитать все документы из базы данных, независимо от того, к какому приложению они принадлежат. Я хотел бы добиться этого с помощью клиентского API, но похоже, что и session.Query, и session.LuceneQuery требуют спецификатора класса.

Какой API я должен использовать для этой задачи?


person Sergey Aldoukhov    schedule 28.06.2010    source источник


Ответы (2)


Клиентскому API требуется тип, поскольку он предназначен для работы с CLR POCO и поэтому обрабатывает преобразование (из Json) за вас.

В вашем случае вам нужно будет работать напрямую с Json, поскольку вы не знаете тип. Это то, что делает веб-интерфейс. Я бы рекомендовал просмотреть код Java-Script, чтобы увидеть, как это делается.

Также всегда есть индекс по умолчанию под названием «Raven/DocumentsByEntityName», который вы можете запросить. Это индексирует «Raven-Entity-Name» (соответствующее типу CLR), которое хранится в метаданных документов. Это то, что использует Raven, чтобы позволить ему преобразовать Json в тип CLR. Дополнительную информацию см. в документах.

person Matt Warren    schedule 28.06.2010
comment
Очень жаль. Я надеялся, что есть способ перебрать коллекцию, не прибегая к JSon. - person Sergey Aldoukhov; 28.06.2010

Ниже будут извлечены все документы RavenDB в формате Json:

var docStore = new DocumentStore { Url = "http://localhost:8080" };
using (docStore.Initialize())
{
    var docs = docStore
        .DatabaseCommands
        .Query("Raven/DocumentsByEntityName", new IndexQuery());
}
person Sergey Aldoukhov    schedule 30.06.2010