2012-12-30 76 views
4

我在Azure移動服務中有一個名爲NameTable的表。當我做我的客戶端應用程序下面提到的呼叫(使用移動服務SDK WP8應用程序):Azure移動服務查詢不會返回所有行

var myTable = GetZumoService().GetTable<NameTable>(); 
var myList = await myTable.Where(nameInfo => nameInfo.IsTaken == false).ToListAsync(); 

myList中始終只包含50個項目,雖然我知道,有超過400行符合該表中查詢條件。

我在做什麼錯?

回答

14

默認情況下,服務將只在每次讀操作中返回一定數量的行(正如您注意到的那樣)。由於Azure服務中返回的字節數量是免費的(以及付費數量)的配額,因此移動服務具有此默認值。

您可以使用Take操作詢問更多行。然而,在任何給定時間你可以詢問的行數是1000(即1000)。這個想法是,你不應該要求表中的所有數據 - 它可能會很多 - 並要求使用SkipTake操作需要它們的行。

var myTable = GetZumoService().GetTable<NameTable>(); 
var myList = await myTable.Take(500) 
          .Where(nameInfo => nameInfo.IsTaken == false) 
          .ToListAsync(); 
+0

好的謝謝。你是否也知道在一次API調用中是否有插入,更新或刪除多條記錄的方法? –

+0

順便說一句,我怎麼知道我可以要求的行數限制是多少?你也可以分享一些代碼,說明如何在表格中的所有行中翻頁? –

+1

編輯添加要請求的最大行數。您可以在http://www.windowsazure.com/en-us/develop/mobile/tutorials/add-paging-to-data-dotnet/上的教程中找到關於添加分頁的更多信息。 – carlosfigueira

7

我發現這還不夠。您需要用[EnableQuery]屬性修飾您的Azure移動服務控制器方法,如下所示:

[EnableQuery(PageSize=1000)] 
public IQueryable<MyDataTable> GetOneThousandRecords() 
{ 
    return Query() 
}