所以我知道我可以打补丁,我知道我可以存储,我知道我可以放,但我很清楚如何做一个“upsert”类型的操作,如果没有,我想在其中添加对象' t 存在,或者如果存在则对其进行修补。
这在 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();