2016-02-22 94 views
0

我能够在RavenDB店插入和删除数据。我也能够运行返回多个文档的查询。查询RavenDB

不过,我无法加载使用session.Load<Book>("books/0")返回null数据。此外,当我尝试运行一个查询来搜索具有给定ID的书籍,但预期会出现此特定行为时,我会得到一个InvalidOperationException

有什么我获取的文档时失踪?

代码块:

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

回答

1

这是一个小会儿,因为我用乌鸦,但我相信你需要使用查询无法加载。

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

请注意,仅通过在Query Query上的'ToList()'执行操作,就会将结果集限制为128个项目(这是设计)。 – ErikHeemskerk

+0

有没有办法通过Id来限制查询?这是我使用查询时遇到的挑战。 '但InvalidMethodException抛出;我在session.Query () 其中books.Id.Equals(ID) 选择书籍试图'从书本。 – emilio

+0

@carl_plat我已经更新了答案,以便通过id显示一个查询(假设您的图书对象上有一个属性ID)。 –

3

id为books/0文档? 通常,文档ID以1开头,因此您将拥有books/1等。

+0

我使用我自己的ID并从0开始。那是我应该避免的事情吗? – emilio

+0

这似乎有所帮助。我删除了0 ID,它效果很好。谢谢 :) – emilio