Heim >Backend-Entwicklung >C++ >Navigationseigenschaften im EF -Kern initialisieren oder nicht initialisieren: Welcher Ansatz ist am besten?
Im EF -Kern gibt es zwei Möglichkeiten, Navigationsattribute zu initialisieren:
Methode 1: Initialisieren Sie nicht
Diese Methode initialisiert keine Navigationsattribute in POCO (gewöhnliches altes CLR -Objekt):
Methode 2: Initialisieren Sie im Konstruktor
<code class="language-csharp">public class User { public int Id { get; set; } public string UserName { get; set; } public virtual ICollection<Address> Addresses { get; set; } public virtual License License { get; set; } }</code>
Diese Methode initialisiert Navigationsattribute im POCO -Konstruktor:
Frage 1: Welche Methode ist besser?Für das Sammelattribut (wie z. B. Adressen) gibt es keinen Unterschied in der Funktionalität eins und Methode zwei in Methode 1 und Methode Two. Die Initialisierung wirkt sich nicht auf die Geschäftslogik aus.
<code class="language-csharp">public class User { public User() { this.Addresses = new List<Address>(); //this.License = new License(); //对于引用属性,不建议初始化 } public int Id { get; set; } public string UserName { get; set; } public virtual ICollection<Address> Addresses { get; set; } public virtual License License { get; set; } }</code>
Für Referenzattribute (z. B. Lizenz) wird nicht empfohlen, es zu verwenden. Es kann zu unerwarteten Verhaltensweisen führen, wie leere Entitäten oder teilweise geladene Entitäten in der Datenbank gespeichert werden. Frage 2: Wie kann man die Richtung der Navigationsattribute bestimmen?
In einer solchen zweiwegigen Beziehung zwischen Benutzer und Lizenz kann es auftreten, wenn beide Klassen gegenseitig die Navigationsattribute initialisieren, ein Stack -Überlauf auftreten kann. Um dies zu vermeiden, sollte eine der Navigationsattribute entfernt werden (in diesem Beispiel sollten die Attribute in Sub -Entgelten entfernt werden). Diese Entscheidung sollte auf Geschäftsregeln und verwandten Anweisungen beruhen.
Die Vor- und Nachteile werden mit
verglichen Methode 1 (nicht Initialisierung):
Vorteile:
die Entität, die die Erhaltung der leeren Entität oder partiell belastete
verhindernVermeiden Sie leere Referenzanomalien einfach zu verzögern das Laden
Nachteile:
Vorteile:
Nachteile:
kann es den geladenen Wert abdecken kann die Reparatur von Beziehungen nicht verhindern
Das obige ist der detaillierte Inhalt vonNavigationseigenschaften im EF -Kern initialisieren oder nicht initialisieren: Welcher Ansatz ist am besten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!