Heim >Backend-Entwicklung >C++ >Wie gehe ich zuerst mehrere Fremdschlüsse aus derselben Tabelle im Entitäts -Framework -Code aus?

Wie gehe ich zuerst mehrere Fremdschlüsse aus derselben Tabelle im Entitäts -Framework -Code aus?

Susan Sarandon
Susan SarandonOriginal
2025-01-29 08:18:12372Durchsuche

How to Handle Multiple Foreign Keys from the Same Table in Entity Framework Code First?

Der physische Framework -Code wird bevorzugt: Behandeln Sie mehrere Außenschlüssel aus derselben Tabelle

aus Im physischen Framework -Code können Sie auf eine Beziehung stoßen, die zwischen zwei Entitäten hergestellt werden muss. Dies ist für Anfänger besonders schwierig.

berücksichtigt ein Modell, das Teams und Spiele umfasst, von denen jedes ein Heimmannschaft und ein Gastteam hat. Der Versuch, herkömmliche externe Schlüssel zu verwenden, um dieses Modell zu erstellen, kann jedoch Zyklusreferenzfehler verursachen.

Verstehen Sie das Problem

Wie im ursprünglichen Codefragment gezeigt, erstellen Sie tatsächlich ein Paar Multi -Beziehung für die Attribute zwischen Spiel und Team, wenn der äußere Schlüssel in der Spieleinheit definiert ist. Diese Einstellung führt jedoch zu einer kreisförmigen Referenz, da Team Referenzen auch über den externen Schlüssel übereinstimmen. Dieser Zyklus verstößt gegen die Einschränkungen der Datenbank.

Lösung: Verwenden Sie Set Navigation Attribute und ModelBuilder Fluent API

Um dieses Problem zu lösen, können Sie ein verbessertes Modell verwenden, das eine Sammlung von Navigationsattributen verwendet und die Modellbuilder Fluent API mit dem physischen Framework verwendet. Dies ist ein Beispiel:

Definieren Sie in der Teamklasse zwei separate Navigationsattribute:

Löschen Sie in der Match -Klasse das ForeignKey -Attribut:

In der DBContext -Klasse schreiben Sie die OnModelcreating -Methode neu und verwenden Sie die Fluent -API -Konfigurationsbeziehung:

<code>public virtual ICollection<Match> HomeMatches { get; set; }
public virtual ICollection<Match> AwayMatches { get; set; }</code>

In diesem aktualisierten Modell verfügt die Matchentity über zwei externe Schlüsselattribute, es gibt jedoch kein Navigationsattribut. Stattdessen ist das Navigationsattribut in der Teamentität definiert und ermöglicht das Überqueren des Teams. Der Modellerstellungsprozess verwendet fließende API, um die Beziehung explizit anzugeben, um die Zirkulationsreferenz zu verhindern. Darüber hinaus ist das Willcascadeondelete -Attribut auf false eingestellt, um die Löschung der Klassen zu verhindern, die in dieser Szene nicht empfohlen wird.

<code>public int HomeTeamId { get; set; }
public int GuestTeamId { get; set; }</code>
Wenn Sie dieser Methode folgen, können Sie erfolgreich ein Modell mit mehreren externen Bindungen erstellen, die zuerst im physischen Framework -Code auf dieselbe Tabelle gerichtet sind.

Das obige ist der detaillierte Inhalt vonWie gehe ich zuerst mehrere Fremdschlüsse aus derselben Tabelle im Entitäts -Framework -Code aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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