如何使用 ServiceStack.Aws 在 dynamodb 中进行条件写入
how do a conditional write in dynamodb with ServiceStack.Aws
在 dynamodb 中,您可以进行条件写入(参见 here and here)。
现在,我正在使用 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
中有 "state" 属性 时更新此项目
我刚刚在 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。
在 dynamodb 中,您可以进行条件写入(参见 here and here)。
现在,我正在使用 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
中有 "state" 属性 时更新此项目我刚刚在 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
.
新的 UpdateExpression<T>
构建器可从 v4.0.61 开始使用,现在 available on MyGet。