我有一个删除操作,试图从Azure存储表中删除各种条目。相同的表,相同的分区键。
private async Task RemoveNodesAsyc(string rowKey, string partitionId)
{
var result = this.GetNodes(this.table, rowKey, partitionId);
foreach (var node in result)
{
TableOperation deleteOperation = TableOperation.Delete(node);
TableResult resultDelete = await table.ExecuteAsync(deleteOperation);
}
}
我希望,如果我删除了50行,而行号47失败,则更改会回滚,这样我就不会删除47行,3行挂在以太网上。
有没有任何方法可以在类似事务的模式下执行上述代码?我一直在谷歌上搜索,例如我在这里找到了这个答案,但微软关于集团实体交易的文档只讨论了如何使用Rest API。这个功能在C#中可用吗?在普通的C#中,我怎么能说像启动事务、执行操作和最后提交/回滚之类的话呢?
是否可以在类似事务的模式下执行上述代码?
您应该能够使用TableBatchOperation
和ExecuteBatchAsync
来执行此操作。
您的代码可能类似于(未经测试的代码(:
private async Task RemoveNodesAsyc(string rowKey, string partitionId)
{
var result = this.GetNodes(this.table, rowKey, partitionId);
TableBatchOperation batch = new TableBatchOperation();
foreach (var node in result)
{
batch.Delete(node);
}
TableBatchResult result = await this.table.ExecuteBatchAsync(batch);
}