2012-05-16 47 views
1

我知道這樣的事實,我不能通過一個查詢獲得超過128條記錄,並且如果我使用.Take(1024),這可以擴展到1024,但是我對此有一個新問題示例數據庫上的代碼:奇怪的行爲獲取記錄

var albumCount = session.Query<Album>().Count(); 
Console.WriteLine(albumCount);   // 246 as expected?!? 

var somemoredata = session.Query<Album>(); 
Console.WriteLine(somemoredata.Count()); // 246 but it sould be 128 
int cnt = 1; 
foreach (var album in somemoredata) 
{ 
    Console.WriteLine(cnt++.ToString() + " " + album.Id); // repeats 128 counts 
} 

這是怎麼回事? somemoredata伯爵是246,但是foreach寫128行?!?

錯誤在哪裏?

回答

2

Take正在爲您做分頁,這是save by default原理的一部分。但Count應始終給出該查詢的文檔的實際數量。

這將確保可以:

  1. 顯示的指示,示出的數據僅僅是一個的信息片。 (X的第1頁)。
  2. 讓你知道我們需要時做分頁。
+0

是的,我明白這一點,但我不明白,集合somemoredata有一個計數246,但只提供128個對象。我認爲這應該是一個真正的collection.Count值爲128. – GreenEyedAndy

+1

somemoredata是'IEnumerable'。這意味着它與'session.Query ()'相同。使用'.ToArray()'來獲取獲取的文檔數量。 –

+0

這就是答案!如果我能得到正確的結果,我會對此感到滿意。 – GreenEyedAndy