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不支持這種補丁請求的,我需要手動加載和存儲所有的電影,這是我肯定會想避免因爲性能原因。