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

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返回正确的记录数,但是连续令牌永远不会为null,并且代码会不断循环。

谁能指出我正确的方向?

我正在使用Windows Azure存储4.3.0.0

最佳答案

这是预期的行为。基本上,您是一次从表格中提取所有实体,每次10个实体(new TableQuery<MyEntity>().Take(10))。因此,在一次调用中,表服务返回了10个实体,并且由于表中有10个以上的实体(我假设),因此它返回一个延续令牌,因此循环继续进行。

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

10-17 00:55