我试图使用DynamoDB低级别API作为文档化的这里来更新C#表中的项。
以下是我努力实现这一目标的努力:
var response = DynamoClientProvider.Current.UpdateItem(new UpdateItemRequest
{
TableName = "MyTable",
Key = {{"TableId", new AttributeValue {S = "12345"}}},
ExpressionAttributeNames =
{
{"#T","Timestamp"},
{"#D","Data"}
{"#K","MyKey"}
},
ExpressionAttributeValues =
{
{":Timestamp", new AttributeValue("2016-2-3 00:00:00.000")},
{":Data", new AttributeValue("some data")}
{":MyKey", new AttributeValue("some other data")}
},
UpdateExpression = "SET #D = :Data, #T = :Timestamp, #K = :MyKey",
ConditionExpression = "attribute_not_exists (Data)",
ReturnValues = ReturnValue.ALL_OLD
});这段代码工作得很好,但是当MyKey是空字符串时会出现问题。当这个值为空时,我会得到以下错误:
Amazon.DynamoDBv2.AmazonDynamoDBException: ExpressionAttributeValues包含无效值:提供的AttributeValue为空,必须包含密钥的支持数据类型之一:MyKey
因此,我尝试传递一个空AttributeValue,以便在本例中删除该属性,方法是将其设置为:
new AttributeValue{NULL = true}但是,这将相反地将值设置为True的字符串文本。
发布于 2016-02-03 23:05:41
我不确定DynamoDB的类型是否为空。
如果您需要删除属性,请使用'SET #D = :Data,#T =:time戳--删除#K‘
https://stackoverflow.com/questions/35180855
复制相似问题