5

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.

4

1 に答える 1