Middle
C# da bog'liq bo'lgan ob'ektlarni qanday yuklash amalga oshiriladi?
sobes.tech AI
AIdan javob
C# tilida bog'liq bo'lgan ob'ektlarni yuklash ko'pincha ORM kutubxonalari, masalan, Entity Framework Core yordamida amalga oshiriladi. Asosiy yondashuvlar:
- Eager (tez) yuklash: Bog'liq ma'lumotlar asosiy ob'ekt bilan birga bitta ma'lumotlar bazasi so'rovi bilan yuklanadi.
// Include metodidan foydalanib tez yuklash var postsWithComments = context.Posts .Include(p => p.Comments) .ToList(); - Explicit (aniq) yuklash: Bog'liq ma'lumotlar asosiy ob'ekt olgach, aniq ravishda yuklanadi.
Yagona navigatsiya xususiyatlari uchun// Asosiy ob'ektni olish var post = context.Posts.Find(1); // Bog'liq sharhlarni aniq yuklash context.Entry(post) .Collection(p => p.Comments) .Load();.Reference().Collection()o'rniga ishlatiladi.// Bog'liq muallifni aniq yuklash context.Entry(post) .Reference(p => p.Author) .Load(); - Lazy (sekin) yuklash: Bog'liq ma'lumotlar birinchi marta murojaat qilganda avtomatik ravishda yuklanadi. Proxy sinflarini sozlash yoki bog'liqliklarni in'ektsiya qilishni talab qiladi va ba'zi ORMlarda standart xulq.
Entity Framework Core'da// Lazy yuklash yoqilgan bo'lsa var post = context.Posts.Find(1); // Comments ga murojaat qilish yuklashni chaqiradi int commentCount = post.Comments.Count;Microsoft.EntityFrameworkCore.Proxiespaketini o'rnatish va.UseLazyLoadingProxies()niDbContextkonfiguratsiyasida chaqirish zarur. Navigatsiya xususiyatlarivirtualsifatida e'lon qilinishi kerak.
Yondashuv tanlovi foydalanish holatiga va ishlash (so'rovlar soni) bilan yuklanadigan ma'lumot hajmi o'rtasidagi kompromissga bog'liq.