Maison > développement back-end > C++ > Comment charger avec impatience toutes les entités imbriquées dans Entity Framework Core ?

Comment charger avec impatience toutes les entités imbriquées dans Entity Framework Core ?

Linda Hamilton
Libérer: 2025-01-01 04:10:10
original
931 Les gens l'ont consulté

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

Chargement impatient des entités imbriquées avec Entity Framework Core

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 :

  • Mise à niveau vers EF Core 2.1 et utilisation de LazyLoadingProxies défini sur false.

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
}
Copier après la connexion

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();
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal