Aracılığıyla paylaş


Gelişmiş test konuları

Bu sayfada EF Core uygulamalarını test etmeyle ilgili bazı daha az yaygın konular açıklanmıştır.

Hizmet Sağlayıcı Önbelleğe Almayı Etkinleştir

EF Core, sorgu derleme, model oluşturma ve diğer temel işlevler dahil olmak üzere veritabanı işlemleri için gerekli hizmetleri yönetmek için bir iç hizmet sağlayıcısı kullanır. Varsayılan olarak EF Core, birden çok DbContext örnek aynı yapılandırmayı paylaştığında performansı artırmak için bu iç hizmet sağlayıcılarını önbelleğe alır.

yöntemi, EF Core'un EnableServiceProviderCaching iç hizmet sağlayıcısını önbelleğe alıp almadığını denetler:

public class ApplicationDbContext : DbContext
{
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder
            .EnableServiceProviderCaching(false)
            .UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=Test");
    }
}

Varsayılan davranış: Hizmet sağlayıcısı önbelleğe alma varsayılan olarak etkindir (true). Bu, şu anlama gelir:

  • Hizmet sağlayıcıları önbelleğe alınır ve aynı yapılandırmaya sahip örnekler arasında DbContext yeniden kullanılır
  • Birçok DbContext örnek oluşturan uygulamalar için daha iyi performans
  • Birçok bağlam ayarları paylaştığında bellek yükü azalır.

Önbelleğe almayı devre dışı bırakma zamanı: Hizmet sağlayıcısı önbelleğinin devre dışı bırakılması oluşturma işlemini büyük ölçüde yavaşlatır DbContext ve çoğu durumda varsayılan davranış önerilir. Yanlış kullanılan iç hizmetlerle ilgili sorunlar varsa, bunlar farklı bir şekilde düzeltilmelidir. Ancak hizmetleri test amacıyla değiştiriyorsanız, her testin yeni bir hizmet sağlayıcısı aldığından emin olmak için hizmet sağlayıcısı önbelleğe almayı (false) devre dışı bırakabilirsiniz.