我有一个 azure 函数应用程序,它将基于一个分区键生成多个条目。以防函数执行过程中出现任何错误。我首先删除我的 azure 表上具有相同分区键的所有实体,以防函数 get 重试 2 次或 3 次并插入重复的记录。
所以我决定通过循环一组 100 个实体来使用 ExcuteBatch 操作。
我不确定 TableBatch 会返回什么。它是否返回所有成功删除结果?
这是我现阶段写的。
var projectionQuery = new TableQuery()
.Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, "partitionKey"))
.Select(new[] { "RowKey" });
var entities = table.ExecuteQuery(projectionQuery).ToList();
var offset = 0;
while (offset < entities.Count)
{
var batch = new TableBatchOperation();
var rows = entities.Skip(offset).Take(100).ToList();
foreach (var row in rows)
{
batch.Delete(row);
}
var result = table.ExecuteBatch(batch);
offset += result.Where(x=>x.HttpStatusCode == (int) HttpStatusCode.NoContent).Count() + offset;
}
如果上面的代码是正确的。是否会出现无限循环,试图删除的数据无法删除,并且一直试图删除。