Sobes.tech
Middle

Kaip vyksta susijusių entitetų įkėlimas C#?

sobes.tech AI

Atsakymas iš AI

Dažnai susijusios entitiy įkeliamos C# naudojant ORM bibliotekas, tokias kaip Entity Framework Core. Pagrindiniai metodai:

  • Skubus (Eager) įkėlimas: Susijusios duomenys įkelti kartu su pagrindine entitiy viename užklausoje į duomenų bazę.
    // Naudojant Include metodą skubiam įkėlimui
    var postsWithComments = context.Posts
                                   .Include(p => p.Comments)
                                   .ToList();
    
  • Aktyvus (Explicit) įkėlimas: Susiję duomenys aiškiai įkelti po pagrindinės entitiy gavimo.
    // Pagrindinės entitiy gavimas
    var post = context.Posts.Find(1);
    
    // Aiškus susijusių komentarų įkėlimas
    context.Entry(post)
           .Collection(p => p.Comments)
           .Load();
    
    Naudojant vieno naršymo savybes, vietoj .Collection() naudojamas .Reference().
    // Susijusio autoriaus įkėlimas
    context.Entry(post)
           .Reference(p => p.Author)
           .Load();
    
  • Vėlyvas (Lazy) įkėlimas: Susiję duomenys automatiškai įkelti pirmo kreipimosi metu. Reikalauja proxy klasių konfigūracijos arba priklausomybių injekcijos ir yra numatytas elgesys kai kuriose ORM.
    // Įjungus vėlyvą įkėlimą
    var post = context.Posts.Find(1);
    // Kreipimasis į Comments iškvies įkėlimą
    int commentCount = post.Comments.Count;
    
    Entity Framework Core reikalinga Microsoft.EntityFrameworkCore.Proxies paketo įdiegimas ir .UseLazyLoadingProxies() iškvietimas DbContext konfigūracijoje. Naršymo savybės turi būti pažymėtos kaip virtual.

Pasirinktas metodas priklauso nuo naudojimo scenarijaus ir kompromiso tarp našumo (užklausų skaičiaus) ir įkeltų duomenų kiekio.