Middle
C#-də əlaqəli varlıqların yüklənməsi necə baş verir?
sobes.tech Süni İntellekt
AI-dan cavab
C# dilində əlaqəli varlıqları yükləmək tez-tez ORM kitabxanaları, məsələn, Entity Framework Core vasitəsilə həyata keçirilir. Əsas yanaşmalar:
- İstəkli (Eager) yükləmə: Əlaqəli məlumatlar əsas varlıq ilə birlikdə bir verilənlər bazası sorğusunda yüklənir.
// Include metodundan istifadə etməklə istəkli yükləmə var postsWithComments = context.Posts .Include(p => p.Comments) .ToList(); - Açıq (Explicit) yükləmə: Əlaqəli məlumatlar əsas varlıq əldə edildikdən sonra açıq şəkildə yüklənir.
Yalnızca naviqasiya xüsusiyyətləri üçün// Əsas varlığın alınması var post = context.Posts.Find(1); // Əlaqəli şərhlərin açıq yüklənməsi context.Entry(post) .Collection(p => p.Comments) .Load();.Reference().Collection()yerinə istifadə olunur.// Əlaqəli müəllifi açıq yükləmə context.Entry(post) .Reference(p => p.Author) .Load(); - Lazımi (Lazy) yükləmə: Əlaqəli məlumatlar ilk dəfə müraciət edildikdə avtomatik yüklənir. Proxy siniflərinin konfiqurasiyası və ya asılılıq injeksiyası tələb edir və bəzi ORM-lərdə standart davranışdır.
Entity Framework Core-da// Lazımi yükləmə aktivləşdirilibsə var post = context.Posts.Find(1); // Comments-ə müraciət yükləməni tetikler int commentCount = post.Comments.Count;Microsoft.EntityFrameworkCore.Proxiespaketinin quraşdırılması və.UseLazyLoadingProxies()çağırılmasıDbContextkonfiqurasiyasında vacibdir. Naviqasiya xüsusiyyətlərivirtualkimi elan edilməlidir.
Yöntəm seçimi istifadə ssenarisindən və performans (sorğu sayı) ilə yüklənən məlumat həcmi arasında kompromisə bağlıdır.