2017-02-16 1 views
4

Я пытаюсь использовать DynamoDB в Amazon AWS в моем проекте MVC .net. И я также пытаюсь выполнить многоуровневый проект Business-DataAccess-Model.Как конвертировать объект T в Amazon DynamoDB Документ динамически

У меня есть класс GenericDataRepository, который реализует функцию Add().

Я отправляю объект T для добавления(), и я хотел бы преобразовать его в объект документа Amazon динамически. Как я могу это сделать и что лучше всего?

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].

Смежные вопросы