2011-08-20 44 views
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"); 
      } 
     } 
    } 

PopulateEventsToRaven只是增加了2048很簡單的文檔數據庫。

第一個跳過組合獲取第一個1024個doucuments修改文檔,然後提交更改。

下一個跳轉組合再次想要獲得第一個1024個文檔,但這次它獲得的文檔編號爲1024到2048,因此測試失敗。爲什麼是這樣,我會再次期待第一個1024?

編輯:我已經變了,如果我不修改文件的行爲是好的。

回答

12

問題是你沒有指定順序,這意味着RavenDB可以自由選擇要返回的項目,這些不一定會與它在前一個調用中返回的項目相同。 使用OrderBy並且它將保持一致。