2014-03-27 55 views
4

我有幾個DynamoDB表將充當聚合數據存儲(我們正在「即時」滾動報告)。我希望能夠使用.NET:Object持久性模型(您可以在其中構建具有註釋的類)。問題是DynamoDBContext對象似乎只有'Save'方法,而不是'Save and Add values'方法。因爲從Dynamo中檢索對象和再次寫入該行的時間之間的時間可能會比一個微不足道的數量大,並且多個線程可能會嘗試增加,所以我不希望在該處添加增量。 NET代碼。相反,我想要.ADD屬性活動。但我不確定是否可以使用對象持久性模型指定屬性操作。有誰知道這是可能的嗎?DynamoDB和.NET對象持久性模型,使用「ADD」值而不是覆蓋

[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,然後重新推送。我寧願運行「添加」命令,始終向mycount發送'1',並讓發電機做數學運算以保證正確性。

回答

0

因爲我沒有在這方面找到大量資源,所以我決定爲此編寫自己的擴展方法。它並不是完美的,你不能從上下文占卜與dbclient對象,因爲它不是公共的,所以你必須把它傳遞英寸

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

然而,當我離開回答此問題,因爲我不不知道是否有更簡單的方法來執行此操作。