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 (հնազանդ) բեռնում: Կապված տվյալները ավտոմատ բեռնում են առաջին մուտքի ժամանակ:
    // Lazy բեռնում ակտիվացված
    var post = context.Posts.Find(1);
    // Comments մուտքը բերում է բեռնում
    int commentCount = post.Comments.Count;
    
    Entity Framework Core-ում անհրաժեշտ է տեղադրել Microsoft.EntityFrameworkCore.Proxies փաթեթը և կանչել .UseLazyLoadingProxies() DbContext կոնֆիգուրացիայում։ Նավիգացիոն հատկությունները պետք է հայտարարվեն որպես virtual։

Ընտրությունը կախված է օգտագործման սցենարից և բեռնումների քանակի և տվյալների ծավալի միջև բալանսից։