2016-12-14 15 views
-1

我正在使用C#使用Dynamodb documentmodel。下面是以下結構:dynamodb updateitemrequest C#

表:聯繫 領域: ID 全名 地址:[{街,省份,城市,郵編},{街,州,市}]

我想要添加新地址到地址或可以說追加到列表(地址)

我想下面的代碼,但它不工作。我總是收到錯誤的請求

Document address = new Document(); 
address["Id"] = "1"; 
address["Street"] = "XYZ"; 
address["state"] = "AAAA"; 
address["City"] = "QQQ"; 
address["Zip"] = "34556"; 

UpdateItemRequest updateRequest = new UpdateItemRequest 
{ 
    TableName = "Contacts" 
    Key = new Dictionary<string, AttributeValue> 
    { 
     {"Id", new AttributeValue{S = "1"}} 
    }, 
    UpdateExpression = "SET #addresses = list_append(#addresses, :address)", 
    ExpressionAttributeNames = new Dictionary<string, string> 
     { 
      {"#addresses", "addresses"} 
     }, 
    ExpressionAttributeValues = new Dictionary<string, AttributeValue> 
     { 
      { ":address", new AttributeValue{S = address.ToString()}}, 

     } 

}; 

dbClient.UpdateItem(updateRequest); 

你可以請建議修復此代碼或任何新的方法來做同樣的事情。

回答

0

1)operand應該是一個列表

list_append(操作數,操作數) - 該函數計算結果爲列表 與添加到它的新元素。新元素必須包含在 列表中,例如將2添加到列表中,操作數將爲[2]。您可以通過 反轉操作數的順序將新元素附加到列表的開始或結尾。

2)應該使用此類DynamoDBList

列表 - 使用DynamoDBList構造。

3)實施例: -

var addressList = new DynamoDBList(); 
addressList.Add(address); 

4)改變的表達屬性值: -

ExpressionAttributeValues = new Dictionary<string, AttributeValue> 
     { 
      { ":address", new AttributeValue{L = addressList}}, 

     } 
+0

爲L = AddressList中我得到錯誤不能隱式轉換型DynamoDBList列出