CosmosDb table 一次检索多条记录

CosmosDb table retrieve multiple records at once

我正在考虑一次进行多点读取操作(它们属于同一个分区,我不打算一次检索超过 100 个)。要求真的很简单。 Cloud table 不支持一次检索多个实体,我真的不知道如何继续。

我可以使用分区键和所有感兴趣的行键创建一个 Table 查询,但这似乎有点矫枉过正。我很清楚我在寻找什么。我也不想结束扫描整个分区。

这就是我所做的。但是我不知道 CloudTable 客户端是否线程安全。

List<Task<TableResult>> taskList = new List<Task<TableResult>>();
CloudTable cloudTable = ...;
foreach (T entity in readContainer.Entities)
{
    taskList.Add(cloudTable.ExecuteAsync(TableOperation.Retrieve<T> 
                                              (entity.PartitionKey,
                                               entity.RowKey)));
}
Task.WaitAll(taskList.ToArray());
IList<TableResult> results = new List<TableResult>();
foreach (Task<TableResult> task in taskList)
{
    results.Add(task.Result);
}

CloudTable 是线程安全的。

CloudTable 批处理 API 可以在上述场景中使用。请检查 https://docs.microsoft.com/en-us/dotnet/api/microsoft.windowsazure.storage.table.cloudtable.executebatch?view=azure-dotnet