gpt4 book ai didi

c# - 使用 .NET SDK 在 DynamoDB 中保留动态对象

转载 作者:太空狗 更新时间:2023-10-29 23:20:32 25 4
gpt4 key购买 nike

我正在尝试使用 .NET SDK 将以下类持久化到 DynamoDB:

public class MyClass
{
public string Id { get; set; }

public string Name { get; set; }

public object Settings { get; set; }
}

问题出在设置属性上。它可以是任何类型的对象,我事先并不知道分配给它的是什么。当我尝试将它保存到 DynamoDB 时,出现以下异常:

System.InvalidOperationException: 'Type System.Object is unsupported, it has no supported members'

文档模型和对象持久性模型方法都会导致相同的异常。

有没有办法在 DynamoDB 中持久化这些对象? MongoDB 和 Azure DocumentDB 等其他数据库可以毫无问题地执行此操作,并且可以使用鉴别器将它们反序列化为正确的类型,或者作为动态 JSON 对象。

最佳答案

您可以使用此处记录的一般方法:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBContext.ArbitraryDataMapping.html

这是我对任意对象的实现:

public class DataConverter : IPropertyConverter
{
public object FromEntry(DynamoDBEntry entry)
{
var primitive = entry as Primitive;
if (primitive == null || !(primitive.Value is String) || string.IsNullOrEmpty((string)primitive.Value))
throw new ArgumentOutOfRangeException();
object ret = JsonConvert.DeserializeObject(primitive.Value as string);
return ret;
}

public DynamoDBEntry ToEntry(object value)
{
var jsonString = JsonConvert.SerializeObject(value);
DynamoDBEntry ret = new Primitive(jsonString);
return ret;
}
}

然后像这样注释您的属性:

[DynamoDBProperty(typeof(DataConverter))]
public object data { get; set; }

关于c# - 使用 .NET SDK 在 DynamoDB 中保留动态对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42748120/

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