2017-02-16 7 views
4

MVC .netプロジェクトでAmazon AWSでDynamoDBを使用しようとしています。また、Business-DataAccess-Modelレイヤープロジェクトもやっています。TオブジェクトをAmazon DynamoDBドキュメントに動的に変換する方法

私はAdd()機能を実装するGenericDataRepositoryクラスを持っています。

Add()にTオブジェクトを送信しています。そのオブジェクトをAmazonのDocumentオブジェクトに動的に変換したいと思います。どのようにすればよいのでしょうか?ベストプラクティスは何ですか?動的に文書を埋めるため

public void Add(T entity) 
{ 
    if (entity == null) 
     return; 

    var doc = new Document(); 

    // Convert entity to Document automatically 
    doc["Title"] = entity.Title; 
    doc["Body"] = entity.Body; 
    doc["Author"] = entity.Author; 
    // Convert entity to Document automatically 


    ..... 
    .....  
    ..... 
} 

答えて

3

あなたは、リフレクションを使用することができます。

public void Add(T entity) 
{ 
    if (entity == null) 
    return; 

    var doc = new Document(); 
    entity.GetType().GetProperties().ToList().ForEach(x => doc[x.Name] = x.GetValue(entity)); 
    ... 
} 
2

私はあなたがJSONにあなたのオブジェクトをシリアル化するためにJson.netを使用して、そのドキュメントによれば、フォームDynamoDBの文書を作成することができると思います:

var jsonText = JsonConvert.SerializeObject(entity, Formatting.Indented); 
var item = Document.FromJson(jsonText); 
+0

変換が多すぎるため、結果として動作が遅くなります。 –

+0

はい、しかし、純粋な手動の反射は、オブジェクトがサブオブジェクト、コレクションなどとなる可能性があるため複雑になります。 – Sergey

1

Tオブジェクトに[Serializable]属性を追加することを忘れないでください。

関連する問題