gpt4 book ai didi

.net - 空的 PrimitiveList 被 DynamoDB 忽略

转载 作者:行者123 更新时间:2023-12-05 08:59:35 26 4
gpt4 key购买 nike

我在 DynamoDB 中保存用户配置文件,并使用属性将 .net 类型转换为 dynamo 条目

所以这是我正在使用的转换器:

public class DictRoomClassHouseInfoConverter : IPropertyConverter
{
...

public DynamoDBEntry ToEntry(object value)
{
var dictionary = value as Dictionary<RoomClass, HouseInfo>;

if (dictionary == null)
{
throw new ArgumentException("Invalid type");
}

var entry = new PrimitiveList();

foreach (var kvp in dictionary)
{
entry.Add(new Primitive { Value = string.Format("{0}|{1}|{2}", (int)kvp.Key, kvp.Value.House, kvp.Value.TimesSold) });
}

return entry;
}
}

现在的问题是,当 Dictionary 为空并且 ToEntry 返回一个空的 PrimitiveList 时,不会保存对该 Dictionary 的更改

所以如果我做类似的事情:

var profile = GetProfile(id);
//profile.DictProp has 3 items;


profile.DictProp.Clear();
//profile.DictProp has 0 items;

SaveProfile(profile);

var p = GetProfile(id);
//profile.DictProp has 3 items;

最佳答案

@jtlebi 正确回答该服务不接受空字符串或空集。 .NET SDK 以此为基础,如果您尝试保存一个空的 PrimitiveList,SDK 将忽略它并且属性不会更改。

但是,仍然有一种方法可以删除属性:将 .NET 对象上的字段设置为 null 或从 IPropertyConverter.ToEntry 方法返回 null。然后,当您调用 DynamoDBContext.Save 时,SDK 将为该特定属性发出 DELETE 命令。

关于.net - 空的 PrimitiveList 被 DynamoDB 忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13163230/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com