我有几个DynamoDB表,它们将充当聚合数据存储(我们正在动态地"累积"报告)。我希望使用。net:对象持久化模型(在其中构建带有注释的类)。问题是DynamoDBContext对象似乎只有一个"保存"方法,而不是一个"保存和添加值"方法。因为从Dynamo检索对象和再次写入该行之间的时间可能比微不足道的时间要长,并且可能有多个线程试图增加,所以我不希望在。net代码中完成增量。相反,我想使用。add AttributeAction。但我不确定是否可以使用对象持久化模型指定属性操作。有人知道这是可能的吗?
[DynamoDBTable("my_table")]
public class MyRecord
{
[DynamoDBHashKey(AttributeName = "my_id")]
public string MyID{ get; set; }
/// <summary>
/// Hash of the Region and Country fields for unique data lookup from DynamoDB
/// </summary>
[DynamoDBRangeKey(AttributeName = "location")]
public string Location { get; set; }
[DynamoDBProperty("my_count")]
public int MyCount{ get; set; }
上面是一个示例对象。这个想法是,MyID获得几个代表用户操作的"计数"。我不希望得到mycount,然后在。net中添加1,然后重新推送。我宁愿运行'Add'命令,总是发送'1'到mycount,并让dynamo做数学来保证正确性。
由于我在这方面没有找到大量的资源,我决定为此编写自己的扩展方法。它不是完美的,因为你不能从上下文中推断出DBClient对象,因为它不是公共的,所以你必须把它传递进去。
https://gist.github.com/edgiardina/9815520但是,我将不回答这个问题,因为我不知道是否有更简单的方法来执行它。