2011-04-06 16 views
9

进出口使用RavenDB(在服务器模式下运行@localhost:3000),和ASP.NET MVC3RavenDB:一个简单的查询<T>().ToList()返回0结果

我有这样的代码段,其从停止工作建立289.它确实工作过几次,不知道它是否是更新到322或我做了什么。

Session.Query<Post>().ToList().ForEach(Session.Delete); 

它删除所有帖子的时候我尝试了一段时间后,(我只在我的样本数据大约50多个职位,以及500多进来),只有我能看到的变化是这两个发生在当代码段(使用Session.delete)以上实际运行

Executing query '' on index 'dynamic/Posts' in 'http://localhost:3000' 
Query returned 0/0 results 

而且在乌鸦日志(文本文件)也运行

A first chance exception of type 'System.Net.WebException' occurred in System.dll 
A first chance exception of type 'System.Net.WebException' occurred in Raven.Client.Lightweight.dll 

而且该日志出现在Visual Studio的输出窗口没有任何不幸

Request # 7: GET  - 46 ms - ZaszStore - 200 - /indexes/dynamic/Posts?query=&start=0&pageSize=128&aggregation=None 

此查询运行得很好:

Session.Load<Post>("MyPostId") 

,并获取正确的日志实例。

为什么简单的Session.Query()。ToList()一直返回0结果?而Session.Query()。Count()总是返回0。考虑到Raven DB的SilverLight-UI(SL-UI)清楚地显示数据库中有50多个帖子,什么会导致这种行为?

正确填写“Raven-Entity-Name”。

+1

你可以尝试创建一个明确的索引并查询它吗? – 2011-04-07 05:17:47

+1

我只是试过,查询对索引作品!但我不想继续创建各种索引,只是为了获取数据库中特定实体的所有文档。 – Zasz 2011-04-07 11:24:52

+0

在统计标签中是否有索引错误?另外尝试删除动态索引并让它从头开始重新开始。 – 2011-04-07 12:13:58

回答

1

对于这种查询可以得到像这样所有的文档:

documentStore.DatabaseCommands.StartsWith("post", <page>, <size>) 

这应该是比发出一个查询返回的所有文档,因为它直接拉他们从数据存储更方便,更快捷,绕过Lucene索引。

但是,它只适用于当你想获得所有的保存前缀作为他们的Id的文档。

+1

我可以像所说的那样获取数据库中的所有文档,或者我可以使用LuceneQuery功能获取它,或者我可以使用HTTP接口并使用lucene查询再次创建Web请求以获取它。但我想知道为什么在这个世界上,Linq提供者不工作:(这是raven db的亮点 – Zasz 2011-08-03 05:41:53