DynamoDB和.NET对象持久性模型,使用' ADD'值而不是覆盖

时间:2014-03-27 15:42:28

标签: c# .net amazon-dynamodb object-persistence

我有几个DynamoDB表,它们将作为汇总数据存储(我们正在及时汇总报告)。我希望使用.NET:对象持久性模型(您可以在其中构建对其具有注释的类)。问题是DynamoDBContext对象似乎只有一个' Save'方法,而不是'保存和添加值'方法。因为从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得到了几个&#39;&#39;代表用户操作。我不想得到mycount然后在.NET中添加1然后重新推送。我宁愿运行&#39;添加&#39;命令并始终发送&#39; 1&#39;到mycount并让发电机做数学以保证正确性。

1 个答案:

答案 0 :(得分:0)

由于我没有找到大量资源,我决定为此编写自己的扩展方法。它并不完美,因为你不能将DBClient对象从上下文中划分出来,因为它不公开,所以你必须将它传入。

https://gist.github.com/edgiardina/9815520

但是,我不会回答这个问题,因为我不知道是否有更简单的方法来执行此操作。