Sobes.tech
Middle

Comment se charge les entités liées en C#?

sobes.tech IA

Réponse de l'IA

Le chargement des entités liées en C# se fait souvent à l’aide de bibliothèques ORM, telles qu’Entity Framework Core. Les approches principales :

  • Chargement eager (impatient) : Les données liées sont chargées avec l’entité principale en une seule requête à la base de données.
    // Utilisation de la méthode Include pour le chargement eager
    var postsWithComments = context.Posts
                                   .Include(p => p.Comments)
                                   .ToList();
    
  • Chargement explicit : Les données liées sont chargées explicitement après avoir obtenu l’entité principale.
    // Récupération de l’entité principale
    var post = context.Posts.Find(1);
    
    // Chargement explicite des commentaires liés
    context.Entry(post)
           .Collection(p => p.Comments)
           .Load();
    
    Pour les propriétés de navigation singulières, on utilise .Reference() au lieu de .Collection().
    // Chargement explicite de l’auteur lié
    context.Entry(post)
           .Reference(p => p.Author)
           .Load();
    
  • Chargement lazy (paresseux) : Les données liées sont chargées automatiquement lors du premier accès. Nécessite la configuration de proxies ou l’injection de dépendances et est le comportement par défaut dans certains ORM.
    // Avec chargement lazy activé
    var post = context.Posts.Find(1);
    // Accès à Comments déclenche le chargement
    int commentCount = post.Comments.Count;
    
    En Entity Framework Core, il faut installer le package Microsoft.EntityFrameworkCore.Proxies et appeler .UseLazyLoadingProxies() dans la configuration de DbContext. Les propriétés de navigation doivent être déclarées comme virtual.

Le choix de la méthode dépend du scénario d’utilisation et du compromis entre performance (nombre de requêtes) et volume de données chargées.