您是否尝试过使用上述代码检索 1000 多个实体?我认为使用简单的ExecuteQuery 就足够了。
文档只说它对纯REST请求有1,000限制,ExecuteQuery API内部使用这个rest api,但是自动切到多个请求,每个请求都有的限制>1,000。
因此,如果您使用 .NET 包,则无需担心此限制,该库已经为您处理了这个问题。您可以参考此thread 了解更多信息。
这里是来自 Azure SDK 的 ExecuteQuery 的一些关键代码,如果你不指定 take 数字,你会发现实际上最大数字是 9223372036854775807L:
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);
}