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