Heim > Backend-Entwicklung > C++ > Wie lade ich alle verschachtelten Entitäten im Entity Framework Core eifrig?

Wie lade ich alle verschachtelten Entitäten im Entity Framework Core eifrig?

Linda Hamilton
Freigeben: 2025-01-01 04:10:10
Original
930 Leute haben es durchsucht

How to Eager Load All Nested Entities in Entity Framework Core?

Eifriges Laden verschachtelter Entitäten mit Entity Framework Core

Problem:

Eifriges Laden aller verschachtelten zugehörigen Entitäten im Entity Framework Core 2.0.1 hat sich als Herausforderung erwiesen. Insbesondere bleiben verschachtelte Entitäten wie Kunde und Adresse für eine Bestellentität trotz Versuchen, sie zu laden, null.

Versuche:

Verschiedene Ansätze wurden erfolglos versucht , einschließlich:

  • Upgrade auf EF Core 2.1 und Verwendung von LazyLoadingProxies auf eingestellt false.

Lösung:

Derzeit gibt es in EF Core keine integrierte Funktion zum standardmäßigen Eager-Laden aller verschachtelten zugehörigen Entitäten. Es gibt jedoch benutzerdefinierte Erweiterungsmethoden, die diese Funktionalität bereitstellen können:

public static IQueryable<T> Include<T>(this IQueryable<T> source, IEnumerable<string> navigationPropertyPaths)
    where T : class
{
    return navigationPropertyPaths.Aggregate(source, (query, path) => query.Include(path));
}

public static IEnumerable<string> GetIncludePaths(this DbContext context, Type clrEntityType, int maxDepth = int.MaxValue)
{
    // Omitted for brevity
}
Nach dem Login kopieren

Verwendung:

public virtual async Task<IEnumerable<T>> GetAllAsync(Expression<Func<T, bool>> predicate = null)
{
    var query = Context.Set<T>()
        .Include(Context.GetIncludePaths(typeof(T));

    if (predicate != null)
        query = query.Where(predicate);

    return await query.ToListAsync();
}
Nach dem Login kopieren

Diese Verwendung zeigt die Einbeziehung aller zugehörigen Pfade für angegebener Entitätstyp.

Das obige ist der detaillierte Inhalt vonWie lade ich alle verschachtelten Entitäten im Entity Framework Core eifrig?. 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