Heim > Backend-Entwicklung > C++ > Warum sind die EF -Kernnavigationseigenschaften bis zum direkten Zugriff auf verwandte Unternehmen null?

Warum sind die EF -Kernnavigationseigenschaften bis zum direkten Zugriff auf verwandte Unternehmen null?

Mary-Kate Olsen
Freigeben: 2025-01-24 22:16:10
Original
601 Leute haben es durchsucht

Why Are EF Core Navigation Properties Null Until Direct Access to Related Entities?

EF -Kernverzögerungs -Lade -Navigationsattribute

<:> Frage:

Im Modell des Entity Framework Core (EF Core) wurde das Navigationsattribut zum leeren Wert zurückgegeben, bevor er direkt auf die zuständigen Entitäten zugreift.

Modell:

Abfragefrage:

<code class="language-csharp">public class Mutant
{
    ...
    public virtual OriginalCode OriginalCode { get; set; }
}

public class OriginalCode
{
    ...
    public virtual ICollection<Mutant> Mutants { get; set; }
}</code>
Nach dem Login kopieren
Beim Abrufen der Mutante ist das Originalcode -Navigationsattribut leer:

dynamisches Füllen der Beziehung:

Aber beim Abfragen der verwandten Originalcode -Entitäten:
<code class="language-csharp">var mutants = db.Mutants.ToList();
mutants.ForEach(m => Console.WriteLine(m.OriginalCode == null));
// 输出:所有突变体均为True</code>
Nach dem Login kopieren

Originalcode -Navigationsattribute von Mutanten füllen automatisch: aus

Erläuterung:

<code class="language-csharp">var originalCodes = db.OriginalCodes.ToList();</code>
Nach dem Login kopieren
Der Vorladungsmechanismus von

EF Core füllt automatisch die Navigationsattribute der relevanten Entitäten, die in den Kontext geladen wurden. Im zweiten Fall wird bei der Suche nach Originalcodes auch die entsprechende Mutante in den Kontext geladen, sodass ihre Navigationsattribute gefüllt werden.

<code class="language-csharp">mutants.ForEach(m => Console.WriteLine(m.OriginalCode == null));
// 输出:所有突变体均为False</code>
Nach dem Login kopieren
Lösung:

Um dieses Verhalten zu kontrollieren, sollte die explizite Lademethode verwendet werden, wie z. B. vor -laden:

oder, um eine automatische Füllung zu verhindern, eine neue DBContext -Instanz oder keine Tracking -Abfrage verwenden.

update:

In EF Core v2.1 unterstützt es jetzt die Verzögerungsbelastung. Um dies zu aktivieren, markieren Sie die Navigationsattribute als virtuell, installieren Sie Microsoft.EntityFrameworkCore.proxies und rufen Sie UseLazyloadingProxies auf.

Das obige ist der detaillierte Inhalt vonWarum sind die EF -Kernnavigationseigenschaften bis zum direkten Zugriff auf verwandte Unternehmen null?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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