我尝试使用 .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 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; }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)