【问题标题】:How to check versions with Json and without using DynamoDBVersion attribute?如何使用 Json 而不使用 DynamoDBVersion 属性检查版本?
【发布时间】:2015-07-08 07:27:17
【问题描述】:

在我们的项目中,我们使用 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; }
}

【问题讨论】:

    标签: amazon-dynamodb aws-sdk


    【解决方案1】:

    听起来您对Conditional Writes 感兴趣。即使您使用 JSON 来表示对象,仍然可以在调用 DynamoDB 时包含条件以更新项目。但是,它需要使用 UpdateItemSpec 而不是直接将 Item 提供给 Table 对象。

    即使使用条件写入,如果不满足特定条件(例如版本不同或项目不存在),您将只能使写入失败。然后,您可以对这种极端情况进行单独的逻辑处理。条件写入可用于检查项目中的任何字段是否满足任何特定条件,对于用例,您可以将逻辑应用于版本属性。

    【讨论】:

      猜你喜欢
      • 2021-07-25
      • 2019-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-09
      相关资源
      最近更新 更多