Sobes.tech
Middle

C#'ta ilişkili varlıkların yüklenmesi nasıl gerçekleşir?

sobes.tech yapay zeka

AI'dan gelen yanıt

C# dilinde ilişkili varlıkların yüklenmesi genellikle Entity Framework Core gibi ORM kütüphaneleri kullanılarak yapılır. Temel yaklaşımlar:

  • İstekli (Eager) yükleme: İlişkili veriler, ana varlıkla birlikte tek bir veritabanı sorgusunda yüklenir.
    // Include yöntemi kullanılarak istekli yükleme
    var postsWithComments = context.Posts
                                   .Include(p => p.Comments)
                                   .ToList();
    
  • Açık (Explicit) yükleme: İlişkili veriler, ana varlık alındıktan sonra açıkça yüklenir.
    // Ana varlığın alınması
    var post = context.Posts.Find(1);
    
    // İlişkili yorumların açık yüklenmesi
    context.Entry(post)
           .Collection(p => p.Comments)
           .Load();
    
    Tekil gezinme özellikleri için .Reference() kullanılır, .Collection() yerine.
    // İlişkili yazarın açık yüklenmesi
    context.Entry(post)
           .Reference(p => p.Author)
           .Load();
    
  • Tembel (Lazy) yükleme: İlişkili veriler, ilk erişimde otomatik olarak yüklenir. Proxy yapılandırması veya bağımlılık enjeksiyonu gerektirir ve bazı ORM'lerde varsayılan davranıştır.
    // Tembel yükleme etkinleştirilmişse
    var post = context.Posts.Find(1);
    // Comments'e erişim yüklemeyi tetikler
    int commentCount = post.Comments.Count;
    
    Entity Framework Core'da, Microsoft.EntityFrameworkCore.Proxies paketinin kurulması ve .UseLazyLoadingProxies() çağrısı DbContext yapılandırmasında gereklidir. Gezinti özellikleri virtual olarak tanımlanmalıdır.

Yöntem seçimi kullanım senaryosuna ve performans (sorgu sayısı) ile yüklenen veri hacmi arasındaki dengeye bağlıdır.