c# - Azure 表查询异步 - 始终返回连续 token

标签 c# azure async-await azure-table-storage azure-storage

我尝试使用 ExecuteQuerySegmentedAsync 对 Azure 表存储执行异步 TableQuery。代码的相关部分如下:

public async Task<List<MyEntity>> GetTableData()
{
    CloudTableClient tableClient = GetTableClient();

    CloudTable table = tableClient.GetTableReference("MyTableName");

    TableQuery<MyEntity> query = new TableQuery<MyEntity>().Take(10);

    List<MyEntity> results = new List<MyEntity>();
    TableContinuationToken token = null;

    do
    {
        var seg = await table.ExecuteQuerySegmentedAsync(query, token);
        token = seg.ContinuationToken;
        results.AddRange(seg.Results);
    }
    while (token != null);

    return results
}

问题在于,虽然 ExecuteQuerySegmentedAsync 返回正确的记录数,但连续标记永远不会为空,并且代码会不断循环。

有人能指出我正确的方向吗?

我正在使用 Windows Azure 存储 4.3.0.0

最佳答案

这是预期的行为。基本上,您一次从表中获取 10 个实体的所有实体 ( new TableQuery<MyEntity>().Take(10) )。因此,在一次调用中,表服务会返回 10 个实体,并且因为表中有超过 10 个实体(我假设),所以它会返回一个继续标记,从而循环继续。

关于c# - Azure 表查询异步 - 始终返回连续 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26257822/

相关文章:

c# - 循环中的 OutOfMemoryException 错误

c# - ZipArchiveEntry Length 是否返回错误的大小?

azure - 将 SQL VM 移至 CSP 订阅

c# - 只初始化一次异步模式

javascript - 使用 Promise/resolve 和 async/await 从函数返回 MySql 结果

c# - 基于未命名的样式

c# - 逐字读取文本文件

entity-framework - 查询Azure移动应用程序TableController

azure - SignalR 和 Azure - 消息传递不可靠?

javascript - 即使我在不​​同的选项卡上,您能否让 Javascript 在浏览器上以最佳性能运行?