RavenDB:简单查询<t>()。ToList()返回0结果</t>

时间:2011-04-06 12:40:58

标签: ravendb

我正在使用RavenDB(在运行@localhost:3000的服务器模式下)和ASP.NET MVC3

我有这个代码段从构建289停止工作。它之前确实工作了几次,不确定它是322的更新还是我做的事情。

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

当我尝试一段时间后,它正在删除所有帖子,(我的样本数据中只有大约50个帖子,还有500个以上的帖子),只有我能看到的变化是这两个在运行时发生

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

当上面的代码段(Session.Delete)实际运行时,此日志出现在visual studio输出窗口中

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

在Raven日志中,(文本文件)没有什么不妥之处

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

此查询运行正常:

Session.Load<Post>("MyPostId")

并获取正确的Post Instance。

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

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

1 个答案:

答案 0 :(得分:1)

对于这种类型的查询,您可以获得所有类似的文档:

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

这比发出查询以返回所有文档更简单,更有效,因为它直接从数据存储中提取它们,绕过Lucene索引。

但是,只有当您想要将所有具有保存前缀的文档作为其ID时,它才有效。