I have not had consistent results when deleting entities in an Azure table when the deletion occurs in a “foreach” loop. PartitionKey is unique.
Is there a best practice that folks can recommend?
I have left out Try..Catch statements for brevity.
Assuming:
var context = new FooContext(_storageAccount);
var query = (from e in context.TableBar
where e.RowKey == rowKey
select e).AsTableServiceQuery();
Method #1
foreach (var entity in query.Execute())
{
// delete each entity
context.DeleteObject(entity);
context.SaveChanges();
}
Method #2
foreach (var entity in query.Execute())
{
// delete each entity
context.DeleteObject(entity);
}
context.SaveChanges();
Method #3
var bars = query.Execute();
foreach (var bar in bars)
context.DeleteObject(bar);
context.SaveChanges();
Method #1 appears to delete most entities, but generally the last entity does not delete. It’s a valid entity.