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-ში არის ნაგულისხმევი ქცევა.
    // როდესაც ჩართულია სლაი ლეიზი დატვირთვა
    var post = context.Posts.Find(1);
    // მიმართვა Comments-ის გამო იტვირთება
    int commentCount = post.Comments.Count;
    
    Entity Framework Core-ში საჭიროა Microsoft.EntityFrameworkCore.Proxies პაკეტის დაყენება და .UseLazyLoadingProxies()-ის გამოძახება DbContext კონფიგურაციაში. ნავიგაციური თვისებები უნდა იყოს გამოცხადებული როგორც virtual.

მეთოდის არჩევანი დამოკიდებულია გამოყენების სცენარზე და კომპრომისზე შესრულებასა და მონაცემების მოცულობას შორის.