DynamoDB有条件的SaveAsync

时间:2019-08-17 11:50:15

标签: c# amazon-dynamodb

我正在使用以下代码:

Dir | Rename-Item –NewName { $_.Name.Replace(".","_") }

我要尝试做的只是在EventCode不是CC的情况下保存记录。目前,它一直在保存。我可以先检索记录,进行检查,然后根据需要调用SaveAsync-但是我想在SaveAsync调用中全部完成。这可能吗?

1 个答案:

答案 0 :(得分:0)

除非我错过了一些事情,否则看起来更高级别的api不可能做到这一点。我最终重构为以下内容:

AmazonDynamoDBClient client = new AmazonDynamoDBClient();

UpdateItemRequest updateItemRequest = new UpdateItemRequest()
{
    TableName = "QTrackStatus",
    ReturnValues = ReturnValue.ALL_NEW,
    ConditionExpression = "EventCode <> :ec",
    UpdateExpression = "SET EventCode = :ec, EventDateTime = :edt, EventLocation = :el, EventLastUpdate = :elu",
    ExpressionAttributeValues = new Dictionary<string, AttributeValue>()
    {
        { ":ec", new AttributeValue("CC") },
        { ":edt", new AttributeValue("2019-09-09 14:00:30") },
        { ":el", new AttributeValue("BFS") },
        { ":elu", new AttributeValue() { N = ((long)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds).ToString() } }
    },
    Key = new Dictionary<string, AttributeValue>()
    {
        { "Key", new AttributeValue("m@m.com") }
    }
};

try
{
    UpdateItemResponse updateItemResponse = await client.UpdateItemAsync(updateItemRequest);
}
catch(ConditionalCheckFailedException e)
{

}

这使我可以实现自己的目标。