Heim >Backend-Entwicklung >C++ >Wie behandle ich zuerst mehrere Fremdschlüsse in derselben Tabelle im Entitäts -Framework -Code?
Im Entitätsgerüstkern ist es wichtig, die inter -begeisterte Beziehung zu modellieren. Wenn Sie begegnen, kann das Erstellen eines Modells mit mehreren externen Schlüssel in derselben Tabelle Abnormalitäten verursachen.
In Ihrem Beispiel definieren Sie das Team und vergleichbar, um die Beziehung zwischen dem Team und dem Spiel zu erfassen. Ihre anfängliche Methode löst jedoch die Abnormalität der Zyklusreferenz aus.
Um dieses Problem zu lösen, müssen Sie die reibungslose API -Konfiguration von Hasrequired () und Withmany () und der Withmany () -Methode sowie der Withmany () -Methode und der OnModelCreating () verwenden. Dies ist ein aktualisiertes Modell:
in diesem Modell:
<code class="language-c#">public class Team { public int TeamId { get; set; } public string Name { get; set; } public virtual ICollection<Match> HomeMatches { get; set; } public virtual ICollection<Match> AwayMatches { get; set; } } public class Match { public int MatchId { get; set; } public int HomeTeamId { get; set; } public int GuestTeamId { get; set; } public float HomePoints { get; set; } public float GuestPoints { get; set; } public DateTime Date { get; set; } public virtual Team HomeTeam { get; set; } public virtual Team GuestTeam { get; set; } } public class Context : DbContext { // ... protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Match>() .HasOne(m => m.HomeTeam) .WithMany(t => t.HomeMatches) .HasForeignKey(m => m.HomeTeamId) .OnDelete(DeleteBehavior.Restrict); // or DeleteBehavior.NoAction modelBuilder.Entity<Match>() .HasOne(m => m.GuestTeam) .WithMany(t => t.AwayMatches) .HasForeignKey(m => m.GuestTeamId) .OnDelete(DeleteBehavior.Restrict); // or DeleteBehavior.NoAction } }</code>
Teamunternehmen umfassen zwei Wettbewerbe: Hausmatches und Auswärtsmatches.
OnDelete(DeleteBehavior.Restrict)
DeleteBehavior.NoAction
zu verwenden. WillCascadeOnDelete(false)
verhindern Löschvorgänge, es sei denn, die relevanten Datensätze sind nicht vorhanden. Wählen Sie, welche von Ihren spezifischen Bedürfnissen abhängt. OnDelete(DeleteBehavior.Restrict)
Das obige ist der detaillierte Inhalt vonWie behandle ich zuerst mehrere Fremdschlüsse in derselben Tabelle im Entitäts -Framework -Code?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!