4
的集合打补丁假设我有以下领域:RavenDB - 在非规范化的引用
public class Movie
{
public string Id { get; set; }
public string Name { get; set; }
public List<ActorReference> Actors { get; set; }
}
public class Actor
{
public string Id { get; set; }
public string Name { get; set; }
public string Biography { get; set; }
public string AnotherDetailProperty { get; set; }
}
public class ActorReference
{
public string Id { get; set; }
public string Name { get; set; }
}
现在,如果我要确保演员的名称更改,所有引用电影更新。因此,我首先创建这让我查询在一个特定的演员参与的所有电影索引:
public class Movies_ByActorId : AbstractIndexCreationTask<Movie>
{
public Movies_ByActorId()
{
Map = movies => from movie in movies
from actor in movie.Actors
select new { ActorId = actor.Id };
}
}
好了,现在我想火补丁命令
Session.Advanced.DatabaseCommands.UpdateByIndex(
"Movies/ByActorId",
new IndexQuery
{
Query = "ActorId:" + actorWhoseNameHasChanged.Id
},
new[]
{
new PatchRequest
{
Type = PatchCommandType.Modify,
Name = "Actors",
Nested = new[]
{
// WHAT TO DO HERE?
}
}
},
allowStale: false);
有人可以帮我完成上面的代码块,因为我完全不知道,我怎么只能更新代表已更改actor的非规范化引用的名称。
恐怕RavenDB不支持这种补丁请求的,我需要手动加载和存储所有的电影,这是我肯定会想避免因为性能原因。