Как сделать условную запись в DynamodB с ServiceStack.Aws
В 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
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, вы можете получить доступ к клиенту Dynamo DB, лежащему в основе AWS, с помощью db.DynamoDb
,
Новый UpdateExpression<T>
Builder доступен с версии 4.0.61, которая теперь доступна на MyGet.