Предположим, у меня есть следующий домен:
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);
Может ли кто-нибудь помочь мне завершить этот блок кода выше, поскольку я абсолютно не представляю, как я могу обновить только название денормализованных ссылок, которые представляют измененный актер.
Боюсь, RavenDB не поддерживает такого рода запрос патча, и мне нужно загружать и хранить все фильмы вручную, чего я определенно хотел бы избежать по соображениям производительности.