Heim >Backend-Entwicklung >C++ >Kann Entity Framework 'include ()` Methode mehrere Ebenen verschachtelter Eigenschaften verarbeiten?

Kann Entity Framework 'include ()` Methode mehrere Ebenen verschachtelter Eigenschaften verarbeiten?

DDD
DDDOriginal
2025-01-25 06:01:11880Durchsuche

Can Entity Framework's `Include()` Method Handle Multiple Levels of Nested Properties?

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!

Stellungnahme:
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