2017-01-26 5 views
0

Я пытаюсь научиться использовать DynamoDB с C# У меня есть частичные обновления, Put, Delete working. Условное обновление (если атрибуты являются частью корневого объекта).Условное обновление Dynamodb на вложенном объекте

У меня есть следующая модель.

enter image description here

Человек с большим количеством атрибутов. следующие работы:

Expression expr = new Expression(); 
expr.ExpressionStatement = "Age = :age"; 
expr.ExpressionAttributeValues[":age"] = 26; 

UpdateItemOperationConfig config = new UpdateItemOperationConfig 
{ 
    ConditionalExpression = expr, 
    ReturnValues = ReturnValues.AllNewAttributes 
}; 

Document updatedPerson2 = personCatalog.UpdateItem(doc, config); 

Но что, если мое состояние было на Pet имя?
Я пробовал пару подходов без везения, например:

expr.ExpressionStatement = "Pet.Name = :name"; 
expr.ExpressionAttributeValues[":name"] = "Lilleper"; 

Надежда кто-то может помочь :) Или просто подталкивать меня в правильном направлении.

+0

Странно. Если я могу это сделать: expr.ExpressionStatement = "Pet.Age =: age"; expr.ExpressionAttributeValues ​​[": age"] = 30; он работает? Не работает строка? – Kiksen

ответ

2

Попробуйте выполнить экстернализацию имени субтрибута имени в выражение ExpressionAttributeNames.

Expression expr = new Expression(); 
expr.ExpressionStatement = "Pet.#name = :name"; 
expr.ExpressionAttributeNames["#name"] = "Name"; 
expr.ExpressionAttributeValues[":name"] = "Lilleper"; 
+0

Awesome :) Спасибо за помощь. – Kiksen

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