如何使用ServiceStack.Aws在dynamodb中进行条件写入

时间:2016-06-23 14:51:18

标签: c# amazon-web-services servicestack amazon-dynamodb pocodynamo

在dynamodb中,您可以进行条件写入(请参阅herehere)。

现在,我正在使用ServiceStack.Aws,我想知道如何实现这一点(条件写入)

我的代码看起来像这样

var awsDb = new AmazonDynamoDBClient();
var db = new PocoDynamo(awsDb);
db.UpdateItem<Country>(new Country{CountryId = 1, Name = "New Name"});

我的模型看起来像这样

[Alias("TABLE-NAME")]
public class Country
{
    [AutoIncrement]
    public int CountryId { get; set; }
    public string Name { get; set; }
    public string Culture { get; set; }
    public int State { get; set; }
}

但是我想只有在有#34;状态&#34;时才更新这个项目。物业在0

1 个答案:

答案 0 :(得分:1)

我刚刚在this commit中添加了Typed UpdateExpression支持,它允许您使用表达式构建器构建一个可以使用它的更新查询:

var q = db.UpdateExpression<Country>(1)
    .Set(() => new Country { Name = "New Name" })
    .Condition(x => x.State == 0);

bool wasUpdated = db.Update(q);

就像PocoDynamo的查询和扫描表达式构建器一样,UpdateExpression<T>继承了AWS的UpdateItemRequest,您可以在发送之前使用它来进一步自定义UpdateItemRequest。此外,当PocoDynamo未涵盖某项功能时,您可以使用db.DynamoDb访问AWS的基础Dynamo DB客户端。

新的UpdateExpression<T>构建器可从v4.0.61获得,现在是available on MyGet