2017-09-28 51 views
0

我設計了一個簡單的類一樣,它不能被實例化:AWS DynamoDB對象持久化模型:我的類是不支持的,

[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(類型鹼基類型,字符串actualTableName) 在Amazon.DynamoDBv2.DataModel.ItemStorageConfigCache.GetConfig(類型類型,DynamoDBFlatConfig flatConfig,布爾conversionOnly) 在Amazon.DynamoDBv2.DataModel.DynamoDBContext.ObjectToItemStorage(對象toStore,類型的objectType,布爾keysOnly,DynamoDBFlatConfig flatConfig) 在Amazon.DynamoDBv2.DataModel.DynamoDBContext.ObjectToItemStorage [T](T toStore,布爾keysOnly,DynamoDBFlatConfig flatConfig) 亞馬遜。 DynamoDBv2.DataModel.DynamoDBContext.ToDocument [T](T值,DynamoDBOperationConfig operationConfig) at Amazon.DynamoDBv2.DataModel.DynamoDBContext.ToDocument [T](T value) at myProject4PersistanceOnDynamo.DynamoTableWrapper.Persist [T](T data)in C:\ MyProject的\ myProject4PersistanceOnDynamo \ DynamoTableWrapper.cs:線101(這意味着context.ToDocument(數據)

e.Source:AWSSDK.DynamoDBv2(版本:3.3.0.0 |運行版本:v4.0.30319)

我myProject4PersistanceOnDynamo.DynamoTableWrapper.Persist [T](T數據):

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,它似乎並不我使用了一個forbbiden對象。任何想法發生了什麼錯誤?

+0

這裏瘋狂的猜測(我不使用C#)。難道是因爲這個類沒有一個帶有id,message和timestamp的簡單構造函數,所以它不能從這些值單獨實例化? – jarmod

回答

1

公共MySimpleClass(AnotherClass anotherClassMessage){

您必須沒有任何依賴關係的構造函數。

定義一個多態構造這樣,

public MySimpleClass() {} 

應該解決的問題。

希望它有幫助。

+0

完美!謝謝!這是一個微妙的細節。我試圖找到它寫在文檔上。 – FabioGM

+1

如果解決了您的問題,請採取答覆,如果您仍然有問題,請發表評論。 – Kannaiyan