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:
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 }
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(); }
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!