Amazon dynamodb 如何使用Json检查版本,而不使用DynamoDBVersion属性?

Amazon dynamodb 如何使用Json检查版本,而不使用DynamoDBVersion属性?,amazon-dynamodb,aws-sdk,Amazon Dynamodb,Aws Sdk,在我们的项目中,我们使用JSON.NET序列化对象,然后将它们发送到DynamoDB: public class TestClass { ... public long Version { get; set; } } using (var client = AWSClientFactory.CreateAmazonDynamoDBClient(RegionEndpoint.USEast1)) { var table = Table.LoadTable(client, "

在我们的项目中,我们使用JSON.NET序列化对象,然后将它们发送到DynamoDB:

public class TestClass
{
    ...
    public long Version { get; set; }
}

using (var client = AWSClientFactory.CreateAmazonDynamoDBClient(RegionEndpoint.USEast1))
{
    var table = Table.LoadTable(client, "MyTable", DynamoDBEntryConversion.V2);
    var json = JsonConvert.SerializeObject((TestClass) obj);
    var item = Document.FromJson(json);
    await table.UpdateItemAsync(item);
}
上面代码的问题是DynamoDB没有使用version属性在服务器端执行版本检查。如何使用JSON执行版本检查

public class TestClass
{
    // We do not pass our classes to AWS SDK, so we cannot use this attribute
    [DynamoDBVersion]
    public long Version { get; set; }
}

听起来你对这个很感兴趣。即使您使用JSON来表示对象,仍然可以在调用DynamoDB以更新该项时包含一个条件。但是,它需要使用UpdateItemSpec,而不仅仅是将项直接提供给表对象

即使使用条件写入,也只有在不满足某个条件(例如版本不同或项不存在)时,才能使写入失败。然后,您可以使用单独的逻辑来处理该边缘情况。条件写入可用于检查项中的任何字段是否满足任何特定条件,对于用例,您可以将逻辑应用于Version属性