Sobes.tech
Middle

Hoe wordt het laden van gerelateerde entiteiten in C# uitgevoerd?

sobes.tech AI

Antwoord van AI

Het laden van gerelateerde entiteiten in C# wordt vaak gedaan met ORM-bibliotheken zoals Entity Framework Core. De belangrijkste benaderingen:

  • Eager (gretige) laden: Gerelateerde gegevens worden samen met de hoofdentiteit geladen in één databasequery.
    // Gebruik van de Include-methode voor eager laden
    var postsWithComments = context.Posts
                                   .Include(p => p.Comments)
                                   .ToList();
    
  • Explicit (expliciet) laden: Gerelateerde gegevens worden expliciet geladen nadat de hoofdentiteit is verkregen.
    // Verkrijgen van de hoofdentiteit
    var post = context.Posts.Find(1);
    
    // Expliciet laden van gerelateerde opmerkingen
    context.Entry(post)
           .Collection(p => p.Comments)
           .Load();
    
    Voor enkele navigatie-eigenschappen wordt .Reference() gebruikt in plaats van .Collection().
    // Expliciet laden van de gerelateerde auteur
    context.Entry(post)
           .Reference(p => p.Author)
           .Load();
    
  • Lazy (lui) laden: Gerelateerde gegevens worden automatisch geladen bij de eerste toegang. Vereist configuratie van proxies of dependency injection en is het standaardgedrag in sommige ORM's.
    // Met ingeschakeld lazy laden
    var post = context.Posts.Find(1);
    // Toegang tot Comments activeert het laden
    int commentCount = post.Comments.Count;
    
    In Entity Framework Core is het nodig om het pakket Microsoft.EntityFrameworkCore.Proxies te installeren en .UseLazyLoadingProxies() aan te roepen in de configuratie van DbContext. Navigatie-eigenschappen moeten als virtual worden gedeclareerd.

De keuze van de methode hangt af van het gebruiksscenario en de afweging tussen prestaties (aantal queries) en de hoeveelheid geladen gegevens.