C# DynamoDB.NET-从表中删除所有项

C# DynamoDB.NET-从表中删除所有项,c#,.net,amazon-dynamodb,dml,C#,.net,Amazon Dynamodb,Dml,我正在学习如何使用DynamoDB for.net,我有一个疑问,是否有正确的方法从现有表中删除所有项?我的意思是,我不想删除表,只需清空它。 我读过关于批处理的书,但对我帮助不大 我有这个 private string DeleteAllFromTable() { string result = string.Empty; try { var request = new BatchWriteItemReques

我正在学习如何使用DynamoDB for.net,我有一个疑问,是否有正确的方法从现有表中删除所有项?我的意思是,我不想删除表,只需清空它。 我读过关于批处理的书,但对我帮助不大

我有这个

private string DeleteAllFromTable()
    {
        string result = string.Empty;

        try
        {

            var request = new BatchWriteItemRequest
            {
                RequestItems = new Dictionary<string, List<WriteRequest>> 
                { 
                    {
                        this.Tablename, new List<WriteRequest>
                        {
                            new WriteRequest
                            {
                                DeleteRequest = new DeleteRequest
                                {
                                    Key = new Dictionary<string,AttributeValue>()
                                    {
                                        { "Id", new AttributeValue { S = "a" } }
                                    }
                                }
                            }
                        }
                    }
                }
            };

            var response = this.DynamoDBClient.BatchWriteItem(request);

        }
        catch (AmazonDynamoDBException e)
        {

        }


        return result;
    }
私有字符串DeleteAllFromTable()
{
字符串结果=string.Empty;
尝试
{
var request=新的BatchWriteItemRequest
{
RequestItems=新字典
{ 
{
这个.表名,新列表
{
新的书面请求
{
DeleteRequest=新的DeleteRequest
{
Key=newdictionary()
{
{“Id”,新属性值{S=“a”}
}
}
}
}
}
}
};
var response=this.DynamoDBClient.BatchWriteItem(请求);
}
捕获(Amazondynamodbe异常)
{
}
返回结果;
}
当然,这只会删除与值“a”匹配的id


谢谢。

我建议您删除该表并重新创建它。从DynamoDB:

删除整个表比删除要高效得多 一个接一个的项,这实际上使写入吞吐量增加了一倍 您执行的删除操作与put操作一样多


删除一个表并使用索引重新创建它可能会导致应用程序出现故障,因为删除/创建表通常需要花费大量时间,这会导致资源删除状态错误

,因此,我必须删除该表并立即使用相同的模式重新创建它,以便继续工作。感谢您的回答@Kobit-@GameDev您确实需要检查并确保遵循指导原则。这可能需要一点时间,但这是一个比尝试通过删除所有项清空表好得多的解决方案,而且比尝试通过删除所有项清空表要快得多。如果这是你想要的答案,你也应该接受。我认为这取决于桌子的大小。重新创建很容易需要一分钟才能完成,而掌握表模式似乎是一件非常痛苦的事情。我相信这在一张大桌子上是有意义的,但对于测试来说,我不一定认为它总是最好的选择。这个答案事实上是不正确的。删除所有项目通常比删除/重新创建快,除非表中的项目超过100000个(YMMV取决于项目大小)。