如何根据范围查询结果删除 Azure table 个实体
How to delete Azure table entities based on range query results
我正在尝试根据我的范围过滤器删除 Azure table 实体。我在这里尝试的只是删除旧记录。
我能够根据我的范围搜索条件获得正确的实体。
TableQuery<Tables> rangeQuery = new TableQuery<Tables>().Where(
TableQuery.CombineFilters(
TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, "DeleteTablename"),
TableOperators.And,
TableQuery.GenerateFilterConditionForDate("StartedOn", QueryComparisons.LessThan, DateTime.Now.Add(new TimeSpan(0, -60, 0)))));
foreach(Tables rows in logTable.ExecuteQuery(rangeQuery)) {
log.Info($"{rows.PartitionKey}, {rows.RowKey}\t{rows.FinishedOn}\t{rows.Timestamp}");
}
//till here it works
TableResult retrievedResult = logTable.ExecuteQuery(rangeQuery);
Tables deleteEntity = (Tables)retrievedResult.Result;
我收到以下错误
Cannot implicitly convert type
'System.Collections.Generic.IEnumerable' to
'Microsoft.WindowsAzure.Storage.Table.TableResult' timertest
Cannot convert type 'Microsoft.WindowsAzure.Storage.Table.TableResult'
to 'timertest.Tables' timertest
备注:
timertest
是我的 namespace
Tables
是一个 class,扩展 TableEntity
class 以添加我的
天蓝色的自定义比例 table.
有没有基于范围删除实体的想法?
Any ideas to delete entities based on range?
在 Azure Tables 中执行批量删除,您需要使用 Entity Group Transaction
并添加您希望批量删除的实体,然后执行该批量操作。对于要批量操作(创建、更新或删除)的实体:
- 它们应该具有相同的
PartitionKey
值。
- 一个批次中最多可以包含 100 个实体。
- 一个批次的最大负载大小可以是 4MB。
请注意,即使一个实体在组事务中失败,整个事务也会回滚。
您可以在此处了解有关实体批量交易的更多信息:https://docs.microsoft.com/en-us/rest/api/storageservices/performing-entity-group-transactions。
我正在尝试根据我的范围过滤器删除 Azure table 实体。我在这里尝试的只是删除旧记录。
我能够根据我的范围搜索条件获得正确的实体。
TableQuery<Tables> rangeQuery = new TableQuery<Tables>().Where(
TableQuery.CombineFilters(
TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, "DeleteTablename"),
TableOperators.And,
TableQuery.GenerateFilterConditionForDate("StartedOn", QueryComparisons.LessThan, DateTime.Now.Add(new TimeSpan(0, -60, 0)))));
foreach(Tables rows in logTable.ExecuteQuery(rangeQuery)) {
log.Info($"{rows.PartitionKey}, {rows.RowKey}\t{rows.FinishedOn}\t{rows.Timestamp}");
}
//till here it works
TableResult retrievedResult = logTable.ExecuteQuery(rangeQuery);
Tables deleteEntity = (Tables)retrievedResult.Result;
我收到以下错误
Cannot implicitly convert type 'System.Collections.Generic.IEnumerable' to 'Microsoft.WindowsAzure.Storage.Table.TableResult' timertest
Cannot convert type 'Microsoft.WindowsAzure.Storage.Table.TableResult' to 'timertest.Tables' timertest
备注:
timertest
是我的namespace
Tables
是一个 class,扩展TableEntity
class 以添加我的 天蓝色的自定义比例 table.
有没有基于范围删除实体的想法?
Any ideas to delete entities based on range?
在 Azure Tables 中执行批量删除,您需要使用 Entity Group Transaction
并添加您希望批量删除的实体,然后执行该批量操作。对于要批量操作(创建、更新或删除)的实体:
- 它们应该具有相同的
PartitionKey
值。 - 一个批次中最多可以包含 100 个实体。
- 一个批次的最大负载大小可以是 4MB。
请注意,即使一个实体在组事务中失败,整个事务也会回滚。
您可以在此处了解有关实体批量交易的更多信息:https://docs.microsoft.com/en-us/rest/api/storageservices/performing-entity-group-transactions。