Heim > Backend-Entwicklung > C++ > Wie modelliere ich zuerst eine Team-Match-Beziehung mit zwei ausländischen Schlüssel aus derselben Tabelle im Entitäts-Framework-Code?

Wie modelliere ich zuerst eine Team-Match-Beziehung mit zwei ausländischen Schlüssel aus derselben Tabelle im Entitäts-Framework-Code?

Barbara Streisand
Freigeben: 2025-01-29 08:04:09
Original
774 Leute haben es durchsucht

How to Model a Team-Match Relationship with Two Foreign Keys from the Same Table in Entity Framework Code First?

Verwenden des physischen Framework -Codes bevorzugt: Erstellen Sie zwei externe Schlüssel aus derselben Tabelle, um die Beziehung zwischen Team zu finden

<:> Frage:

Wenn ein Anfänger die Komplexität des physischen Framework -Code studiert, suchte er Anleitung, um ein effektives Modell zu definieren, um die Beziehung zwischen Team und Spiel widerzuspiegeln. Die spezifischen Anforderungen bestehen darin, dass jedes Spiel zwei verschiedene Teameinheiten umfasst, die als Heimteams und Gastteams spezifiziert werden und die Ergebnisse des Spiels behalten.

Antwort:

Sie können die folgenden Methoden verwenden, um das erforderliche Modell zu erstellen:

Die Teamklassenattribute rebend:

Entfernen Sie die Icollection -Eigenschaft der vorhandenen Übereinstimmungen aus der Teamklasse.

Einführen zwei neue Icollection -Eigenschaften: Hausmatches und Auswärtsmatches.
  1. das Modell wie folgt ändern:
  2. Benutzerdefinierte äußere Schlüsselbeziehung:
<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>
Nach dem Login kopieren

Ändern Sie die Übereinstimmungsklasse, um die erforderlichen Schlüsselattribute zu enthalten, und entfernen Sie das Attribut aus den Eigenschaften der Heimeteam und GuestTeam.

Verwenden Sie fließende API in dbcontex, um die externe Schlüsselbeziehung zu definieren:
  1. [ForeignKey]
  2. <:> Hinweis:
<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; }
}

public class Context : DbContext
{
    // ...

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Match>()
                    .HasRequired(m => m.HomeTeam)
                    .WithMany(t => t.HomeMatches)
                    .HasForeignKey(m => m.HomeTeamId)
                    .WillCascadeOnDelete(false);

        modelBuilder.Entity<Match>()
                    .HasRequired(m => m.GuestTeam)
                    .WithMany(t => t.AwayMatches)
                    .HasForeignKey(m => m.GuestTeamId)
                    .WillCascadeOnDelete(false);
    }
}</code>
Nach dem Login kopieren
Jede Teameinheit muss zwei Übereinstimmungen, Hausmatches und Auswärtsmatches haben.

Verwenden Sie die fließende API, um die externe Schlüsselbeziehung zu definieren, da in dieser Szene der Standard der Mapping -Hauptschlüssel nicht ausreicht.

Deaktivieren Sie das Löschen der Klasse, um ein versehentliches Löschen der Teams zu verhindern, auf die mehrere Übereinstimmungen verwiesen werden.
  • Diese überarbeitete Antwort behält das Originalbild und die UESES -Sprache bei, während die Kerninformationen für eine bessere Lesbarkeit beibehalten

Das obige ist der detaillierte Inhalt vonWie modelliere ich zuerst eine Team-Match-Beziehung mit zwei ausländischen Schlüssel aus derselben Tabelle im Entitäts-Framework-Code?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage