J'ai conçu une classe simple comme ça:AWS DynamoDB Objet persistance Modèle: Ma classe est non pris en charge, il ne peut pas être instancié
[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;
}
}
Lorsque je tente de persister sur mon DynamoDB Table en utilisant DynamoDBContext objet contexte pour convertir une persistance objet DynamoDB modèle à l'aide:
context.ToDocument(data)
il jette l'exception e ci-dessous:
e.Message: Type myProject.myNameSpace.MySimpleClass est non pris en charge, il ne peut pas être instancié
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 (type Type, DynamoDBFlatConfig flatConfig, Boolean conversionOnly) à Amazon.DynamoDBv2.DataModel.DynamoDBContext.ObjectToItemStorage (Object toStore, type objectType, Boolean keysOnly, DynamoDBFlatConfig flatConfig) à Amazon.DynamoDBv2.DataModel.DynamoDBContext.ObjectToItemStorage [T] (T toStore, Boolean keysOnly, DynamoDBFlatConfig flatConfig) sur Amazon. DynamoDBv2.DataModel.DynamoDBContext.ToDocument [T] (valeur T, DynamoDBOperationConfig operationConfig) à Amazon.DynamoDBv2.DataModel.DynamoDBContext.ToDocument [T] (valeur T) à myProject4PersistanceOnDynamo.DynamoTableWrapper.Persist [T] (données T) dans C: \ MyProject \ myProject4PersistanceOnDynamo \ DynamoTableWrapper.cs: ligne 101 (ce qui signifie context.ToDocument (données))
e.Source: AWSSDK.DynamoDBv2 (Version: 3.3.0.0 | Version en cours d'exécution: v4.0.30319)
Mon myProject4PersistanceOnDynamo.DynamoTableWrapper.Persist [T] (données T) est:
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;
}
}
J'ai vérifié la documentation sur ce page et ce other page et il n'a pas Semble I utilisé un objet interdit. Une idée de ce qui ne va pas?
Wild devinez ici (je n'utilise pas C#). Serait-ce parce que la classe n'a pas de constructeur simple avec id, message et horodatage, donc elle ne peut pas être instanciée à partir de ces valeurs uniquement? – jarmod