未从 Azure CloudTable 中删除的行

Posted

技术标签:

【中文标题】未从 Azure CloudTable 中删除的行【英文标题】:Rows not being Deleted from Azure CloudTable 【发布时间】:2021-10-27 11:51:14 【问题描述】:

我正在尝试从我的 Azure CloudTable 中删除行,但这些行并未被删除。代码执行没有错误,我得到 HTTP 204 成功结果。我尝试了几种删除这些行的方法,但它们都没有真正删除这些行。

            var query = new TableQuery<SearchCompletedEntity>().Where(TableQuery.GenerateFilterCondition("PartitionKey"
                    , QueryComparisons.Equal
                    , requestId)); ;
            var result = await _table.ExecuteQuerySegmentedAsync(query, null);

            var batchDeleteOperation = new TableBatchOperation();
            foreach (var row in result)
             batchDeleteOperation.Delete(row); 

            await _table.ExecuteBatchAsync(batchDeleteOperation);

【问题讨论】:

ExecuteBatchAsync 返回TableBatchResult 类型的对象。你能检查一下你得到了什么吗? @GauravMantri, HttpStatusCode = 204 并且 Result 是我要删除的行。 您使用的 SDK 是什么,您尝试批量删除多少项? 我正在使用 Microsoft.Azure.Cosmos.Table v1.0.8。这个测试批次只有 1 个项目,但有可能有很多——尽管远不及 100 个。我也尝试过不使用批处理,得到的结果基本相同。 非常感谢@GauravMantri。我改变了我的代码来初始化我的表,就像你做的那样,我的代码现在可以工作了。我正在使用 CloudStorageAccount.Parse(connString); cloudStorageAccount.CreateCloudTableClient(). 【参考方案1】:

根据 Gaurav Mantri 的样本,我发现如果我更改了初始化表的方式,我能够成功删除记录。我不确定之前代码的具体问题是什么,但我想发布更改,以便对其他人有所帮助。

以前的代码不允许删除记录

var storageAccount = CloudStorageAccount.Parse(configuration.ConnectionString);
var tableClient = storageAccount.CreateCloudTableClient();

更新了允许删除记录的代码

var storageCredentials = new StorageCredentials(configuration.AccountName, configuration.AccountKey);
var tableClient = new CloudTableClient(new Uri(configuration.SearchCompletedTableUrl), storageCredentials);

【讨论】:

以上是关于未从 Azure CloudTable 中删除的行的主要内容,如果未能解决你的问题,请参考以下文章

Azure Synapse Sql 池未从 Azure Synapse Studio 数据流接收数据

前端 (HTML) 未从 Microsoft Azure 中的 mysql 数据库获取 Spring Boot 应用程序中的数据

未从 Azure Devops .NET 核心构建获得 SonarCloud 中的代码覆盖率

OleDB 数据未从正确的行读取

将 Azure 表存储的重试策略与 Azure Functions 结合使用

UINavigationItem 未从 Navigator 中删除