1

在 dynamodb 中,您可以进行条件写入(参见此处此处)。

现在,我正在使用 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; }
}

但我只想在 0 中具有“状态”属性时更新此项目

4

1 回答 1

1

我刚刚在此提交中添加了 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.

新的UpdateExpression<T>构建器从 v4.0.61 开始可用,现在可以在 MyGet 上使用

于 2016-06-23T19:28:42.660 回答