Supposons que j'ai le domaine suivant :
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; }
}
Maintenant, si le nom d'un acteur change, je veux m'assurer que toutes les vidéos de référence sont également mises à jour. Par conséquent, je crée d'abord un index qui me permet d'interroger tous les films dans lesquels un acteur spécifique est impliqué :
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 };
}
}
Ok, maintenant je voudrais lancer la commande patch...
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);
Quelqu'un pourrait-il m'aider à compléter le bloc de code ci-dessus, car je n'ai absolument aucune idée de la façon dont je peux seulement mettre à jour le nom des références dénormalisées qui représentent l'acteur modifié.
Je crains que RavenDB ne prenne pas en charge ce type de demande de patch et que je doive charger et stocker manuellement tous les films, ce que je voudrais absolument éviter pour des raisons de performances.