Heim >Backend-Entwicklung >C++ >Wie gehe ich zuerst mit zwei Fremdschlüssel aus derselben Tabelle im Entitäts -Framework -Code um?
Wenn Sie den physischen Framework -Code verwenden, um die Beziehung zwischen der Entität zu priorisieren, können Sie zwei externe Schlüssel treffen, die aus derselben Tabelle festgelegt werden müssen. Dies ist für Anfänger besonders schwierig.
Angenommen, Sie möchten ein Datenmodell für das Team und das Spiel erstellen. Mit dem bevorzugten Code können Sie den folgenden Code schreiben:
Dieser Code verursacht jedoch Abnormalitäten:
<code class="language-csharp">public class Team { [Key] public int TeamId { get; set; } public string Name { get; set; } public virtual ICollection<Match> Matches { get; set; } } public class Match { [Key] public int MatchId { get; set; } [ForeignKey("HomeTeam"), Column(Order = 0)] public int HomeTeamId { get; set; } [ForeignKey("GuestTeam"), Column(Order = 1)] 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; } }</code>
Diese Referenzbeziehung führt zu unerwünschten Zyklusreferenzen. [Einschränkungen name = match_guestTeam]
-Klasse zu erstellen:Um dieses Problem zu lösen, müssen Sie unterschiedliche Methoden für EF bereitstellen, um die externen Schlüssel zuzuordnen. Eine effektive Lösung besteht darin, eine separate Kollektion für die Heimspiele und Auswärtsspiele in der
Team
<code class="language-csharp">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; } }</code>entfernen. Definieren Sie einfach das Attribut des äußeren Schlüssels:
Match
ForeignKey
Schließlich müssen Sie in der -Klasse
<code class="language-csharp">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; } }</code>Konfigurationsbeziehung verwenden:
DbContext
HasRequired()
Durch diese Änderungen können Sie zwei externe Schlüssel aus derselben Tabelle im Prioritätsmodell des physischen Framework -Codes erfolgreich herstellen. WithMany()
Das obige ist der detaillierte Inhalt vonWie gehe ich zuerst mit zwei Fremdschlüssel aus derselben Tabelle im Entitäts -Framework -Code um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!