2016-02-22 3 views
0

Я могу вставлять и удалять данные в магазине RavenDB. Я также могу запускать запросы, которые возвращают несколько документов.Querying RavenDB

Однако я не могу загрузить данные, используя session.Load<Book>("books/0"), который возвращает null. Кроме того, я получаю InvalidOperationException, когда я пытаюсь запустить запрос, который ищет книгу с данным идентификатором, но это конкретное поведение ожидается.

Есть ли что-нибудь, что мне не хватает при получении документа?

Код блока:

using (var session = DocumentStoreHolder.Store.OpenSession()) 
{ 
    for (int i = 0; i < count; i++) 
    { 
     var doc = session.Load<Book>(i); 
     Console.WriteLine(doc); 
    } 
} 

ответ

1

Это было некоторое время, так как я использовал Raven, но я считаю, нужно использовать запрос, не загрузить.

using (var session = DocumentStoreHolder.Store.OpenSession()) 
{ 
    var books = session.Query<Book>().ToList(); 
    books.ForEach(book => 
    { 
     //Note that book is an object, write out one of it's properties 
     Console.WriteLine(book.Name); 
    }); 

    //or get single book: 
    var id = 1; 
    var book = session.Query<Book>() 
     .FirstOrDefault(x => x.ID == id); 
} 
+0

Обратите внимание, что, только делая 'ToList()' на 'Query ()', вы ограничивающего результирующий набор до 128 пунктов (что по дизайну). – ErikHeemskerk

+0

Есть ли способ ограничить запрос идентификатором? У меня есть проблема с использованием запросов. Я пробовал 'из книг в session.Query () где books.Id.Equals (id) select books;' но InvalidMethodException выбрано. – emilio

+0

@carl_plat Я обновил ответ, чтобы показать запрос по id (при условии, что у вас есть идентификатор свойства на вашем объекте книги). –

3

У вас есть документ с идентификатором books/0? Обычно документ идентификаторы начинаются с 1, так что вы будете иметь books/1 и т.д.

+0

Я использую свои собственные идентификаторы и начинаю с нуля. Я должен избегать этого? – emilio

+0

Это, похоже, помогло. Я удалил 0 Id, и он отлично работает. Благодаря :) – emilio