azure - 返回 Windows Azure 表查询的 1000 多个实体

标签 azure odata azure-table-storage

我的问题正是this one 。但是,Azure 存储 API 已更改,我可以找到的此问题的所有答案都涉及旧版本。在当前 API 版本中如何处理返回超过 1000 个项目的查询?获取少于 1000 个项目的查询如下所示:

var query = new TableQuery<TermScoreEntity>()
            .Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal,    Name));

var table = _tableClient.GetTableReference("scores");

foreach (var termScoreEntity in table.ExecuteQuery(query))            
    result.Add(termScoreEntity.RowKey, termScoreEntity.Score);

最佳答案

您是否尝试过使用上述代码检索超过 1000 个实体?我认为使用简单ExecuteQuery就够了。

文档只说它对纯 REST 请求有 1,000 限制,即 ExecuteQuery API内部使用这个rest api,但是自动切分成多个请求,每个请求有1,000的限制。

因此,如果您使用 .NET 包,则无需担心此限制,该库已经为您处理了此问题。可以引用这个thread了解更多信息。

这是 ExecuteQuery 的一些关键代码从Azure SDK中,你会发现实际上最大数量是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);
}

关于azure - 返回 Windows Azure 表查询的 1000 多个实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26960437/

相关文章:

Azure 批量插入 : Bad Request Error

c# - 使用 Azure Key Vault RSA key 加密和解密字符串

azure - 如何从我的网站启动 Azure Web 作业?

python-3.x - Azure 机器学习错误 : You must provide an InferenceConfig when deploying a model with model_framework set to AutoML

javascript - Azure表存储的插入功能中查询其他表

c# - 在哪里可以获取按类别划分的 Unicode 字符列表?

c# - 如何从 Azure webjob 到 Azure webapp 进行通信?

c# - 如何将 OData 键值添加到我的 Entity Framework 类?

asp.net-web-api - 使用apicontroller vs odata EntitySetController

SAP Hana Development 中的 OData 与 XSJS