Heim >Backend-Entwicklung >C++ >Warum sind EF -Kernbeziehungen null, bis sie explizit geladen sind?
leeren <:> Frage:
Bei der Erfassung von Entitäten, die zugehörige Daten enthalten, wird EF Core zunächst in leere Beziehungen zurückgegeben, bevor explizite Belastungen ausgeführt werden.
Szene:
Betrachten Sie die folgende physische Klasse:
Die Beziehung ist in der Methode konfiguriert:
<code class="language-csharp">public class Mutant { public long Id { get; set; } public long OriginalCodeId { get; set; } public virtual OriginalCode OriginalCode { get; set; } } public class OriginalCode { public long Id { get; set; } public virtual List<Mutant> Mutants { get; set; } }</code><:> Frage:
OnModelCreating
<code class="language-csharp">modelBuilder.Entity<Mutant>() .HasOne(m => m.OriginalCode) .WithMany(oc => oc.Mutants) .HasForeignKey(m => m.OriginalCodeId);</code>-attribute der verzögerbaren mutierten Einheiten null. Durch den Zugriff auf die
-Kollektion in einer separaten Abfrage wird das Attribut gefüllt.
Erläuterung: OriginalCode
OriginalCodes
EF Core unterstützt standardmäßig keine Verzögerung des Ladens. Die Beziehungen werden nicht eifrig geladen, es sei denn, eine klare Anfrage. In der ersten Szene, da die -Be Beziehung nicht explizit in die Abfrage enthalten ist, bleibt sie null. OriginalCode
Es gibt zwei Möglichkeiten, dieses Verhalten zu lösen:
<.> 1. Eifrig laden: OriginalCode
Verwenden Sie In der Abfrage enthält es relevante Daten:
<.> 2. Verwenden Sie die Verzögerung des Ladens:
Ab EF Core 2.1 unterstützt es die Verzögerungsbelastung. Dies erfordert jedoch aktiviert und verwendet virtuelle Navigationsattribute.
Automatische Füllung verhindern: Include()
<code class="language-csharp">var mutants = db.Mutants.Include(m => m.OriginalCode).ToList();</code>verwenden, ohne Anfragen für jede Abfrage zu verfolgen.
Das obige ist der detaillierte Inhalt vonWarum sind EF -Kernbeziehungen null, bis sie explizit geladen sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!