<:> 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>
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>
Originalcode -Navigationsattribute von Mutanten füllen automatisch: aus
Erläuterung:
<code class="language-csharp">var originalCodes = db.OriginalCodes.ToList();</code>
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>
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!