Ho il seguente test per Skip take -RavenDB Paging Comportamento
[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");
}
}
}
PopulateEventsToRaven aggiunge semplicemente 2048 molto semplici documenti al database.
La prima combinazione di take skip ottiene i primi 1024 documenti che modificano i documenti e quindi eseguono le modifiche.
La successiva combinazione di take skip vuole ottenere i primi 1024 documenti ma questa volta ottiene il numero di documento da 1024 a 2048 e quindi fallisce il test. Perché è questo, mi aspetterei di nuovo il primo 1024?
Modifica: ho varificato che se non modifico i documenti il comportamento va bene.