具有条件更新的DynamoDBVersion属性

时间:2018-01-16 12:02:33

标签: c# amazon-dynamodb aws-sdk

我正在使用.NET object persistence model与DynamoDB,并使用DynamoDBVersion属性内置optimistic locking

[DynamoDBTable("items")]
public class MyItem
{
    [DynamoDBHashKey]
    public string Id { get; set; }

    [DynamoDBVersion]
    public int? Version { get; set; }
}

保存操作 使用DynamoDBContext很简单。

await _dbContext.SaveAsync(item);

最近我添加了自定义更新条件,将保存操作更改为以下内容。

var table = _dbContext.GetTargetTable<MyItem>();
await table.UpdateItemAsync(_dbContext.ToDocument(item), new UpdateItemOperationConfig
{
    ConditionalExpression = ...
});

这似乎打破了内置的乐观锁定,并且表中的所有项都不包含Version属性。有没有办法将该属性与条件写入一起使用,或以某种方式使用低级.NET SDK手动实现乐观锁定?

1 个答案:

答案 0 :(得分:0)

您期望在ConditionalExpression中添加什么?您必须拥有对象客户端,否则乐观锁定将阻止更新发生。那么您应该能够在客户端进行任何条件检查吗?

请注意,您必须先加载一个对象,然后才能使用乐观锁定进行保存。你是先加载对象吗?