ich zwei Klassen haben, wie folgt:Hinzufügen neuer Datensätze zu einem Entity Framework viel viele mit vorhandenen Aufzeichnungen
public class Movie
{
...
public virtual ICollection<Actor> Actors { get; set; }
}
public class Actor
{
...
public virtual ICollection<Movie> Movies { get; set; }
}
und Entity-Frameworks erstellt eine Tabelle in zwischen die Beziehung zwischen ihnen aufzunehmen.
Nun, meine Frage ist, wie kann ich einen neuen Rekord mit bestehenden Filmen und Rekorde hinzufügen? Es gibt zwei Teile auf diese Frage:
Mit dem folgenden Verfahren, wie kann ich die Schauspieler zum Film hinzufügen, ohne alle bestehenden Beziehungen für den Film zu ersetzen:
public void AddRelationship(int movieId, int[] actorIds) { var movie = new Movie { Id = movieId }; context.Movies.Attach(movie); foreach(var actorId in actorIds) { movie.Actors.add(new Actor{ Id = actorId }); } context.SaveChanges(); }
Diese erstellt einen neuen Actor, der nicht das ist, was ich will.
Mit dem folgende Verfahren, wie kann ich alle Akteure für einen Film mit der angegebenen Liste ersetzen:
public void ReplaceRelationship(int movieId, int[] actorIds) { }
einem Weg, mit dem zweiten Verfahren ist, alle vorhandenen zu löschen und sie zu lesen, aber ich versuche, die Menge von Db-Fahrten unten zu behalten.
Auch beim Hinzufügen möchte ich keine Duplikate hinzufügen, muss ich alle Beziehungen aus und vergleichen in meinem Code?
Ich denke, man versucht, etwas und das hat nicht funktioniert. Könnten Sie fügen Details von dem, was Sie versucht haben, und warum das funktioniert nicht? Nicht sicher, was Sie meinen, indem Sie vorhandene Beziehungen ersetzen (das Hinzufügen ersetzt IMO nicht) – Default
@Default Ich habe meinen Code hinzugefügt, um eine neue Beziehung hinzuzufügen, aber dies erstellt einen neuen Akteur, der nicht denselben wiederverwendet – ADringer