Итак, я знаю, что могу исправлять, я знаю, что могу хранить, и я знаю, что могу поставить, но я ясно понимаю, как я могу выполнить операцию типа «upsert», где я хочу добавить объект, если он не существует или исправьте его, если он есть.
Возможно ли это в RavenDb 4.1+?
Прямо сейчас я как бы здесь, но это неправильно:
foreach (var flag in data)
{
var exists = await _session.Advanced.ExistsAsync(flag.Id);
if (!exists)
{
await _session.StoreAsync(flag);
}
else
{
await _store.Operations.ForDatabase("FeatureFlags").SendAsync(
new PatchOperation(
id: flag.Id,
changeVector: null,
patch: new PatchRequest
{
Script = @"
this.Name = args.Name
this.Description = args.Description
",
Values =
{
["Name"] = flag.Name,
["Description"] = flag.Description
}
}));
}
}
await _session.SaveChangesAsync();