使用Skip和Take的RavenDB分页不起作用

时间:2011-01-12 20:07:07

标签: c# .net ravendb lucene

我正在尝试在RavenDB Lucene索引上实现查询并对结果进行分页。

我有以下代码:

        IDocumentQuery<Post> q = Session.Advanced.LuceneQuery<Post, Posts_Search>()
            .WhereContains("BodyHtml", query)
            .OrElse()
            .WhereContains("Title", query)
            .AddOrder("Published", true)
            .Skip(4).Take(4);

(最后一对Skip和Take是为了一个简单的例子而添加的。)

此查询始终返回与我的查询匹配的所有22个文档,而不仅仅是4,正如我所期望的那样。

我做错了什么?

2 个答案:

答案 0 :(得分:2)

最新的稳定版本(206)出现了这个问题。

我现在已经下载了最新的不稳定版本(251),通过这个版本,我的代码按预期工作。我想这是我使用的版本中的一个错误。如果我从RavenDB小组的问题中获得更有意义的见解,我会确保在此处发布。

答案 1 :(得分:0)

这里只是猜测,因为我不知道RavenDB。但也许Raven提供者不支持skip或take。

您可以尝试在.AddOrder之后转换为IEnumerable来验证。 (然后你会使用Linq to Objects to Skip and Take,注意你仍然会从数据库中获取所有记录)

  ...
  .AddOrder("Published",True)
  .AsEnumerable()
  .Skip(4).Take(4);