2013-09-26 4 views
0

Чтение документов DynamoDB, кажется, что нет способа не перечислять каждое имя/значение атрибута при вставке данных.Amazon DynamoDB - Есть ли способ не указывать каждое имя атрибута?

Например, для вставки пользователя я должен был бы сделать это:

var putRequest = new PutItemRequest 
    { 
     TableName = UsersTableName, 
     Item = new Dictionary<string, AttributeValue>() 
      { 
       {"HashId", new AttributeValue() { S = user.Id.ToString() }}, 
       {"RangeId", new AttributeValue() { S = user.Email }}, 
       {"CreatedUtc", new AttributeValue() { S = user.CreatedUtc.ToString() }}, 
       {"DeactivatedUtc", new AttributeValue() { S = user.DeactivatedUtc.ToString() }}, 
       {"Timezone", new AttributeValue() { S = "US Eastern Standard Time" }}, 
      } 
    }; 

var result = DbClient.PutItem(putRequest); 

Мне нравится модель RavenDb принятия каких-либо ПОКО и выясняя «атрибут» имена на своем собственном, на основе класса ".

Мой вопрос: должен ли я это сделать? Есть ли возможность написать данные, просто передав объект?

Если нет, я собираюсь написать что-то, что будет: я буду использовать отражение, чтобы выяснить имена и типы и сгенерировать словарь PutItemRequest.Item на основе этого. Я бы предпочел, если мне это не нужно.

Как всегда, заблаговременно за помощь!

ответ

1

На самом деле, Amazon уже есть именно то, что я искал для: .NET Object Persistence Model

Это заботится о сериализации ваших объектов для вас - замечательно!

2

В каждом запросе putItem вы должны указать все атрибутов, которые вы хотите сохранить. Если вы пропустите некоторые из них - их значения будут удалены из DynamoDB. И на данный момент нет обходного пути. Чтобы изменить один атрибут, вы должны сначала указать getItem, изменить его в памяти и putItem обратно в DynamoDB.

+0

Я предполагаю, что могу использовать прямой метод HTTP и использовать десериализатор JSON, правильно? В качестве альтернативы я могу написать небольшую библиотеку, чтобы создать словарь атрибутов, используя отражение. Если да, я вставлю сюда ссылку. – MattW

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