1
当在“foreach”循环中删除时,在Azure表中删除实体时,我还没有一致的结果。 PartitionKey是唯一的。在ForEach循环中删除Azure表实体的最佳做法
是否有最佳做法,人们可以推荐?
为了简洁,我省略了Try..Catch语句。
假设:
var context = new FooContext(_storageAccount);
var query = (from e in context.TableBar
where e.RowKey == rowKey
select e).AsTableServiceQuery();
方法#1
foreach (var entity in query.Execute())
{
// delete each entity
context.DeleteObject(entity);
context.SaveChanges();
}
方法#2
foreach (var entity in query.Execute())
{
// delete each entity
context.DeleteObject(entity);
}
context.SaveChanges();
方法#3
var bars = query.Execute();
foreach (var bar in bars)
context.DeleteObject(bar);
context.SaveChanges();
方法#1似乎删除了大多数实体,但通常最后的实体不会删除。这是一个有效的实体。
那么,你想要删除具有相同RowKey但不同的PartitionKey的实体吗?这有点奇怪,可能是缓慢和不完全删除的原因。 Azure存储无法高效地扫描所有的PartitionKey,因此您应该考虑熟知或修复PartitionKey,而不是RowKey。 http://www.windowsazure.com/en-us/develop/net/how-to-guides/table-services/#concepts – Pascal 2013-04-23 15:07:01
谢谢你们的回应。在做了更多的研究后,我找到了解决我的问题的决议。请参阅以下[StackOverflow问题](http://stackoverflow.com/questions/7590383/error-deleting-from-azure-cloud-table-resourcenotfound)。 – user1219694 2013-04-24 04:28:52