RavenDB分页行为

Nil*_*ose 9 ravendb

我有以下测试跳过 -

    [Test]
    public void RavenPagingBehaviour()
    {
        const int count = 2048;
        var eventEntities = PopulateEvents(count);
        PopulateEventsToRaven(eventEntities);

        using (var session = Store.OpenSession(_testDataBase))
        {
            var queryable =
                session.Query<EventEntity>().Customize(x => x.WaitForNonStaleResultsAsOfLastWrite()).Skip(0).Take(1024);

            var entities = queryable.ToArray();

            foreach (var eventEntity in entities)
            {
                eventEntity.Key = "Modified";
            }

            session.SaveChanges();

            queryable = session.Query<EventEntity>().Customize(x => x.WaitForNonStaleResultsAsOfLastWrite()).Skip(0).Take(1024);

            entities = queryable.ToArray();

            foreach (var eventEntity in entities)
            {
                Assert.AreEqual(eventEntity.Key, "Modified");
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

PopulateEventsToRaven只是将2048个非常简单的文档添加到数据库中.

第一个跳过组合获得前1024个doucuments修改文档,然后提交更改.

下一个跳过组合再次想要获得前1024个文档,但这次它得到文档号1024到2048,因此测试失败.为什么这样,我会再次期待第一个1024?

编辑:我已经变了,如果我不修改文档,行为就好了.

Aye*_*ien 12

问题是您没有指定订单,这意味着RavenDB可以自由选择要返回的项目,这些项目不一定与它在上一次调用中返回的项目相同.使用OrderBy,它将是一致的.