我设计了一个像这样的简单类:

[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() {}


那应该解决问题。

希望能帮助到你。

08-19 08:53