RavenDB分页行为

RavenDB分页行为,ravendb,Ravendb,我有下面的跳绳测试- [Test] public void RavenPagingBehaviour() { const int count = 2048; var eventEntities = PopulateEvents(count); PopulateEventsToRaven(eventEntities); using (var session = Store.OpenSession(_testD

我有下面的跳绳测试-

    [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");
            }
        }
    }
[测试]
公众行为
{
常数整数计数=2048;
var eventEntities=PopulateEvents(计数);
PopulateEventsToRaven(事件实体);
使用(var session=Store.OpenSession(_testDataBase))
{
可查询变量=
session.Query().Customize(x=>x.waitForNonSalesultsAsoflastWrite()).Skip(0.Take(1024);
var entities=queryable.ToArray();
foreach(实体中的var eventEntity)
{
eventEntity.Key=“已修改”;
}
session.SaveChanges();
queryable=session.Query().Customize(x=>x.waitfornonstaleresultsafsoflastwrite()).Skip(0.Take(1024);
entities=queryable.ToArray();
foreach(实体中的var eventEntity)
{
Assert.AreEqual(eventEntity.Key,“修改”);
}
}
}
PopulateEventsToRaven只需向数据库添加2048个非常简单的文档

第一个skip-take组合获取前1024个文档,修改文档,然后提交更改

下一个skip-take组合再次希望获得前1024个文档,但这次它获得了文档编号1024到2048,因此测试失败。为什么会这样,我又会期待第一个1024


编辑:我已经证实,如果我不修改文档,行为是正常的。

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