我设计了一个像这样的简单类:
[DynamoDBTable("MyTableName")]
public class MySimpleClass{
[DynamoDBHashKey]
public string Id { get; set; }
[DynamoDBProperty]
public DateTime TimeStamp { get; set; }
[DynamoDBProperty]
public string Message { get; set; }
public MySimpleClass(AnotherClass anotherClassMessage){
this.Id = anotherClassMessage.Id;
this.TimeStamp = anotherClassMessage.TimeStamp;
this.Message = anotherClassMessage.Message;
}
}
当我尝试使用DynamoDBContext对象上下文对DynamoDB表进行持久化以使用以下方式转换为DynamoDB对象持久性模型时:
context.ToDocument(data)
它在下面抛出异常e:
e.Message:类型myProject.myNameSpace.MySimpleClass不支持,无法实例化
e.StackTrace:位于Amazon.DynamoDBv2.DataModel.StorageConfig..ctor(ITypeInfo targetTypeInfo)
在Amazon.DynamoDBv2.DataModel.ItemStorageConfig..ctor(ITypeInfo targetTypeInfo)
在Amazon.DynamoDBv2.DataModel.ItemStorageConfigCache.CreateStorageConfig(Type baseType,String actualTableName)
在Amazon.DynamoDBv2.DataModel.ItemStorageConfigCache.GetConfig(类型类型,DynamoDBFlatConfig flatConfig,布尔转换仅)
在Amazon.DynamoDBv2.DataModel.DynamoDBContext.ObjectToItemStorage(要存储的对象,类型objectType,布尔键仅,DynamoDBFlatConfig flatConfig)
在Amazon.DynamoDBv2.DataModel.DynamoDBContext.ObjectToItemStorage [T](T toStore,仅布尔键,DynamoDBFlatConfig flatConfig)处
在Amazon.DynamoDBv2.DataModel.DynamoDBContext.ToDocument [T](T值,DynamoDBOperationConfig operationConfig)处
在Amazon.DynamoDBv2.DataModel.DynamoDBContext.ToDocument [T](T值)
位于C:\ MyProject \ myProject4PersistanceOnDynamo \ DynamoTableWrapper.cs:行101中的myProject4PersistanceOnDynamo.DynamoTableWrapper.Persist [T](T数据)(表示context.ToDocument(data))
e。源:AWSSDK.DynamoDBv2(版本:3.3.0.0 |运行版本:v4.0.30319)
我的myProject4PersistanceOnDynamo.DynamoTableWrapper.Persist [T](T data)是:
public void Persist<T>(T data)
{
// Client is a AmazonDynamoDBClient object with correct credentials
private DynamoDBContext context = new DynamoDBContext(Client)
try
{
var doc = context.ToDocument(data);
Table.PutItem(doc);
}
catch (Exception e)
{
throw e;
}
}
我检查了关于此page和此other page的文档,看来我没有使用禁忌对象。知道发生了什么问题吗?
最佳答案
公共MySimpleClass(AnotherClass anotherClassMessage){
您需要一个没有任何依赖关系的构造函数。
定义这样的多态构造函数,
public MySimpleClass() {}
那应该解决问题。
希望能帮助到你。