Sobes.tech
Middle

Чӣ гуна бор кардани мавҷудоти алоқаманд дар C#?

sobes.tech AI

Ҷавоб аз AI

Загрузка баёний вобасцаваных у C# часта выконваецца з дапамогай ORM-бібліятэк, такіх як Entity Framework Core. Асноўныя падыходы:

  • Eager (спешны) загрузка: Вобасцаваныя дадзеныя загружаюцца разам з асноўнай вобласцю ў адным запыце да базы дадзеных.
    // Выкарыстанне метаду Include для спешнай загрузкі
    var postsWithComments = context.Posts
                                   .Include(p => p.Comments)
                                   .ToList();
    
  • Explicit (выразная) загрузка: Вобасцаваныя дадзеныя загружаюцца выразна пасля атрымання асноўнай вобласці.
    // Атрыманне асноўнай вобласці
    var post = context.Posts.Find(1);
    
    // Выразная загрузка звязаных каментароў
    context.Entry(post)
           .Collection(p => p.Comments)
           .Load();
    
    Для адзіночных навігацыйных уласцівасцей выкарыстоўваецца .Reference() замест .Collection().
    // Выразная загрузка звязанага аўтара
    context.Entry(post)
           .Reference(p => p.Author)
           .Load();
    
  • Lazy (лёгкая) загрузка: Вобасцаваныя дадзеныя аўтаматычна загружаюцца пры першым звароце. Патрабуе наладкі праксі або ўкаранення залежнасцей і з'яўляецца паводзінам па змаўчанні ў некаторых ORM.
    // Пры ўключаным lazy loading
    var post = context.Posts.Find(1);
    // Зварот да Comments выклікае загрузку
    int commentCount = post.Comments.Count;
    
    У Entity Framework Core неабходна ўсталяваць пакет Microsoft.EntityFrameworkCore.Proxies і выклікаць .UseLazyLoadingProxies() у канфігурацыі DbContext. Навігацыйныя ўласцівасці павінны быць аб'яўлены як virtual.

Выбар метаду залежыць ад сцэнарыя выкарыстання і кампрамісу паміж прадукцыйнасцю (колькасцю запытаў) і аб'ёмам загружаных дадзеных.