Sobes.tech
Middle

Kuidas toimub seotud üksuste laadimine C#-s?

sobes.tech AI

Vastus AI-lt

C#-s saistīto entītu ielāde bieži tiek veikta ar ORM bibliotēkām, piemēram, Entity Framework Core. Galvenie pieejas veidi:

  • Steidzama (Eager) ielāde: Saistītie dati tiek ielādēti kopā ar galveno entītu vienā pieprasījumā uz datu bāzi.
    // Izmantojot Include metodi steidzamai ielādei
    var postsWithComments = context.Posts
                                   .Include(p => p.Comments)
                                   .ToList();
    
  • Izteikta (Explicit) ielāde: Saistītie dati tiek skaidri ielādēti pēc galvenās entītijas saņemšanas.
    // Galvenās entītijas saņemšana
    var post = context.Posts.Find(1);
    
    // Skaidra saistīto komentāru ielāde
    context.Entry(post)
           .Collection(p => p.Comments)
           .Load();
    
    Vienas navigācijas īpašības gadījumā tiek izmantots .Reference() vietā .Collection().
    // Saistītā autora skaidra ielāde
    context.Entry(post)
           .Reference(p => p.Author)
           .Load();
    
  • Vēlākā (Lazy) ielāde: Saistītie dati tiek automātiski ielādēti pirmās piekļuves brīdī. Prasa proxy klases konfigurāciju vai atkarību injekciju un ir noklusējuma uzvedība dažās ORM.
    // Ieslēdzot vēlo ielādi
    var post = context.Posts.Find(1);
    // Piekļuve Comments izsauks ielādi
    int commentCount = post.Comments.Count;
    
    Entity Framework Core ir nepieciešama Microsoft.EntityFrameworkCore.Proxies pakotnes uzstādīšana un .UseLazyLoadingProxies() izsaukšana DbContext konfigurācijā. Navigācijas īpašības jābūt deklarētām kā virtual.

Metodes izvēle ir atkarīga no lietošanas scenārija un kompromisa starp veiktspēju (uzklausījumu skaitu) un ielādēto datu apjomu.