Problème :
Chargement impatient de toutes les entités associées imbriquées dans Entity Framework Core 2.0.1 s’est avéré difficile. Plus précisément, les entités imbriquées, telles que Client et Adresse d'une entité Commande, restent nulles malgré les tentatives de chargement.
Tentatives :
Diverses approches ont été tentées sans succès , notamment :
Solution :
Actuellement, il n'existe aucune fonctionnalité intégrée dans EF Core permettant de charger avec impatience toutes les entités associées imbriquées par défaut. Cependant, il existe des méthodes d'extension personnalisées qui peuvent fournir cette fonctionnalité :
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 }
Utilisation :
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(); }
Cette utilisation démontre l'inclusion de tous les chemins associés pour le type d'entité spécifié.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!