いくつかのアイテムを削除するためのこのコードがあります:
private static void DeleteBatch(IList<TableEntity> toDelete)
{
if(toDelete == null)
throw new ArgumentNullException("toDelete");
if(toDelete.Count == 0)
throw new ArgumentException("There is no elements in toDelete.");
if(toDelete.GroupBy(e => e.PartitionKey).Count() > 1)
throw new ArgumentException("The entities to delete must have the same PartitionKey.");
Parallel.ForEach(Partitioner.Create(0, toDelete.Count, 100),
range =>
{
TableBatchOperation batchOperation = new TableBatchOperation();
for (Int32 i = range.Item1; i < range.Item2; i++)
batchOperation.Delete(toDelete[i]);
_table.ExecuteBatch(batchOperation);
});
}
テーブル エンティティは * ETag で渡されます。
場合によってStorageException: The specified resource does not exist.
は、これが 404 HttpStatusCode であると推測されます。この場合、存在しないかどうかは気にしないので、それらを引き起こした操作についてはこの例外を無視したいと思います。バッチ内の個々の TableOperations に対して 404 を無視する方法、または少なくともこの例外をスローしなかった TableOperations に対してバッチ操作を再試行する方法 (どの操作が失敗したかを知る方法)。404 の原因を特定するためだけに、各操作を個別に行うのは非常に非効率的です。