Heim >Backend-Entwicklung >C++ >Kann Entity Framework 'include ()` Methode mehrere Ebenen verschachtelter Eigenschaften verarbeiten?
Entity Framework mehrstufiges Attributladen
Die-Methode von Include()
Entity Framework kann verwandte Entitäten effizient vorab laden, kann sie jedoch mehrere Ebenen verschachtelter Eigenschaften (z. B. verschachtelte Sammlungen mit komplexen Objekten) verarbeiten?
Bestehende Implementierung und Einschränkungen
Der Beispielcode zeigt, dass die Methode Include()
Eigenschaften der ersten Ebene laden kann. Abfrage wie folgt:
<code class="language-csharp">public IEnumerable<applicationserver> GetAll() { return this.Database.ApplicationServers .Include(x => x.ApplicationsWithOverrideGroup) .Include(x => x.ApplicationWithGroupToForceInstallList) .Include(x => x.CustomVariableGroups) .ToList(); }</code>
ruft ein ApplicationsWithOverrideGroup
-Objekt ab, das eine ApplicationServer
-Eigenschaft enthält, die eine Sammlung von ApplicationWithOverrideVariableGroup
-Objekten enthält. Die Eigenschaften ApplicationWithOverrideVariableGroup
und Application
in der Sammlung CustomVariableGroup
werden jedoch nicht aufgefüllt.
Lösung für mehrstufiges verschachteltes Include
Abhängig von der verwendeten Version von Entity Framework können mehrstufige Eigenschaften mit den folgenden Methoden vorab geladen werden:
Entity Framework 6:
Die Include()
-Methode von Entity Framework 6 akzeptiert einen Lambda-Ausdruck. Durch die Verwendung verschachtelter Lambda-Ausdrücke können Sie mehrere Einschlussebenen angeben:
<code class="language-csharp">var query = this.Database.ApplicationServers .Include(x => x.ApplicationsWithOverrideGroup .Select(y => y.Application)) .Include(x => x.ApplicationsWithOverrideGroup .Select(y => y.CustomVariableGroup));</code>
Entity Framework Core:
Entity Framework Core führt die ThenInclude()
-Methode ein, die kaskadierende Includes ermöglicht. Diese Methode wird nach dem anfänglichen Include()
verwendet, um eine tiefere Einbindung anzugeben:
<code class="language-csharp">var query = this.Database.ApplicationServers .Include(x => x.ApplicationsWithOverrideGroup) .ThenInclude(y => y.Application) .ThenInclude(y => y.CustomVariableGroup);</code>
Mit diesen Methoden können Sie mehrstufige Eigenschaften im Entity Framework vorab laden und so sicherstellen, dass komplexe Objektsammlungen beim Abruf vollständig gefüllt sind.
Das obige ist der detaillierte Inhalt vonKann Entity Framework 'include ()` Methode mehrere Ebenen verschachtelter Eigenschaften verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!