您是否試圖用上述代碼檢索超過1000個實體?我覺得使用簡單的ExecuteQuery
就足夠了。
文檔只說有限制爲純粹的REST要求,ExecuteQuery
API內部使用此REST API,可自動切割成多個請求,他們每個人都有的的限制。
所以,如果你使用.NET包,你不必擔心這個限制,庫已經爲你處理。有關更多信息,請參閱此thread。
下面是來自Azure的SDK爲ExecuteQuery
一些關鍵代碼,你會發現真正的最大數量爲9223372036854775807L
,如果你不指定take
號:
internal IEnumerable<DynamicTableEntity> Execute(CloudTableClient client, CloudTable table, TableRequestOptions requestOptions, OperationContext operationContext)
{
CommonUtility.AssertNotNullOrEmpty("tableName", table.Name);
TableRequestOptions modifiedOptions = TableRequestOptions.ApplyDefaults(requestOptions, client);
operationContext = operationContext ?? new OperationContext();
return CommonUtility.LazyEnumerable<DynamicTableEntity>((Func<IContinuationToken, ResultSegment<DynamicTableEntity>>) (continuationToken =>
{
TableQuerySegment<DynamicTableEntity> local_0 = this.ExecuteQuerySegmented((TableContinuationToken) continuationToken, client, table, modifiedOptions, operationContext);
return new ResultSegment<DynamicTableEntity>(local_0.Results)
{
ContinuationToken = (IContinuationToken) local_0.ContinuationToken
};
}), this.takeCount.HasValue ? (long) this.takeCount.Value : long.MaxValue);
}
絕對正確,我不知道爲什麼我認爲它不起作用。一定是我在那裏錯過的東西。謝謝你的好回答! – Marc