C# 为什么';t从DynamoDb字符串列表属性中删除最后一个字符串将更新表中的项
DynamoDB.NET映射SDK不会将空列表持久化到表中。实际上,这意味着从列表中删除最后一次并尝试将该项保存到表中将导致该属性保持不变(仍然具有最后一项)。如何正确地将属性更新为空列表 以下是映射类的相关部分: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为空(删除
[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);
这将导致删除列表属性,并在从表中读取项目时映射到空列表