Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么';t从DynamoDb字符串列表属性中删除最后一个字符串将更新表中的项_C#_.net_Amazon Dynamodb - Fatal编程技术网

C# 为什么';t从DynamoDb字符串列表属性中删除最后一个字符串将更新表中的项

C# 为什么';t从DynamoDb字符串列表属性中删除最后一个字符串将更新表中的项,c#,.net,amazon-dynamodb,C#,.net,Amazon Dynamodb,DynamoDB.NET映射SDK不会将空列表持久化到表中。实际上,这意味着从列表中删除最后一次并尝试将该项保存到表中将导致该属性保持不变(仍然具有最后一项)。如何正确地将属性更新为空列表 以下是映射类的相关部分: [DynamoDBTable("x.y.groups")] public class Group : GroupListItem { public List<string> tokens { get; set; } } 如果group.accounts为空(删除

DynamoDB.NET映射SDK不会将空列表持久化到表中。实际上,这意味着从列表中删除最后一次并尝试将该项保存到表中将导致该属性保持不变(仍然具有最后一项)。如何正确地将属性更新为空列表

以下是映射类的相关部分:

[DynamoDBTable("x.y.groups")]
public class Group : GroupListItem
{
    public List<string> tokens { get; set; }
}

如果group.accounts为空(删除了最后一项),则尽管group.tokens是一个空列表,但DynamoDB表中的属性将不会更新,并且列表中仍有一项。

这似乎是映射SDK中的一个错误。为了解决这个bug,我在下面添加了if语句:

group.tokens = group.accounts.Select(a => a.token).ToList();
if (group.tokens.Count == 0) group.tokens = null;
await Context.SaveAsync(group);

这将导致删除列表属性,并在从表中读取项目时映射到空列表。

这似乎是映射SDK中的一个错误。为了解决这个bug,我在下面添加了if语句:

group.tokens = group.accounts.Select(a => a.token).ToList();
if (group.tokens.Count == 0) group.tokens = null;
await Context.SaveAsync(group);
这将导致删除列表属性,并在从表中读取项目时映射到空列表