2017-02-16 59 views
4

我想在我的MVC .net項目中的Amazon AWS中使用DynamoDB。而且我也試圖做一個Business-DataAccess-Model分層項目。如何將T對象動態地轉換爲Amazon DynamoDB文檔

我有一個GenericDataRepository類,它實現了Add()功能。

我正在向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.net序列化你的對象到JSON,然後創建根據自己的文檔dynamoDb文件的形式,它:

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

轉換太多,因此 - 工作緩慢。 –

+0

是的,但純手動反射可能很複雜,因爲對象可能與子對象,集合等有關。 – Sergey

1

不要忘記給你的T對象添加[Serializable]屬性。

相關問題