Sobes.tech
Middle

Hogyan történik a kapcsolódó entitások betöltése C#-ban?

sobes.tech MI

Válasz az MI-től

A kapcsolódó entitások betöltése C#-ban gyakran ORM-könyvtárak, például az Entity Framework Core segítségével történik. A fő megközelítések:

  • Szorgalmas (Eager) betöltés: A kapcsolódó adatok a fő entitással együtt töltődnek be egy adatbázis-kérdésben.
    // Include módszer használata a szorgalmas betöltéshez
    var postsWithComments = context.Posts
                                   .Include(p => p.Comments)
                                   .ToList();
    
  • Explicit (kifejezett) betöltés: A kapcsolódó adatok kifejezetten töltődnek be a fő entitás megszerzése után.
    // A fő entitás megszerzése
    var post = context.Posts.Find(1);
    
    // Kifejezett kapcsolódó kommentek betöltése
    context.Entry(post)
           .Collection(p => p.Comments)
           .Load();
    
    Egyedi navigációs tulajdonságok esetén .Reference() használatos a .Collection() helyett.
    // Kapcsolódó szerző kifejezett betöltése
    context.Entry(post)
           .Reference(p => p.Author)
           .Load();
    
  • Lusta (Lazy) betöltés: A kapcsolódó adatok automatikusan betöltődnek az első hozzáféréskor. Proxy-k vagy függőség-injektálás konfigurációját igényli, és néhány ORM-ben alapértelmezett viselkedés.
    // Engedélyezett lusta betöltéssel
    var post = context.Posts.Find(1);
    // A Comments elérésével betöltődik
    int commentCount = post.Comments.Count;
    
    Entity Framework Core esetén szükséges telepíteni a Microsoft.EntityFrameworkCore.Proxies csomagot és meghívni a .UseLazyLoadingProxies() metódust a DbContext konfigurációjában. A navigációs tulajdonságokat virtual-ként kell deklarálni.

A módszer kiválasztása a felhasználási forgatókönyvtől és a teljesítmény (kérdések száma) és az adatbetöltés mennyisége közötti kompromisszum függvénye.