Derinlemesine yazılım eğitimleri için kanalımı takip edebilirsiniz...

Entity Framework Core – Connection Resiliency

Merhaba,

Uygulamalarımızda veritabanı diyaloglarını hızlı bir şekilde gerçekleştirebilmek için kullandığımız ORM yapılanmaları bazen istemsiz durumlarla karşılaşabilmektedirler. Tabi ki de bir yazılımın çalışma süresince istemsiz durumlarla karşılaşması oldukça olağan bir durumdur lakin burada mühim olan kullandığımız ORM yapılanmasının bu durumlarla karşılaşıldığında nasıl bir aksiyon aldığıdır. Bu içeriğimizde, ORM yapılanmalarından Entity Framework Core tarafından generate edilen veritabanı komutlarının, beklenmedik hatalar ile karşılaşması durumunda benimsediği yenilikçi bir yaklaşım olan Connection Resiliency stratejisini ele alıyor olacağız.

Connection Resiliency, EF Core tarafından üretilen veritabanı komutlarının başarısız olması durumunda tekrar otomatik olarak denenmesini sağlayan bir stratejidir. EF Core, bu olası hatalar durumuna karşılık Retry Pattern’i baz almakta ve otomatik olarak hata veren işlemi yeni bir transaction ile tekrar devreye sokmaktadır. Böylece bu özellik sayesinde hataları tespit edebilmekte mümkün olmaktadır.

Connection Resiliency’i kullanabilmek için yapılması gereken sadece EF Core konfigürasyonlarında retry policy’i aktif etmektir. Bunun için ‘OnConfiguring’ metodu kullanılabilir.

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlServer("Server=.;Database=CompanyDB2;Trusted_Connection=True;",
                options => options.EnableRetryOnFailure());
            base.OnConfiguring(optionsBuilder);
        }

Yahut Asp.NET Core uygulamalarında context’i register ettiğimiz ‘Startup.cs’ dosyası da tercih edilebilir.

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext<CompanyContext>(x =>
                x.UseSqlServer("Server=.;Database=CompanyDB2;Trusted_Connection=True;",
                options => options.EnableRetryOnFailure()));
        }

Görüldüğü üzere ‘EnableRetryOnFailure’ fonksiyonu ile başarısızlık durumunda yeniden deneme etkinleştirilmektedir. İlgili fonksiyonun overload’larına göz atarsak eğer;
Entity Framework Core - Connection Resiliencyyeniden deneme sayısını(maxRetryCount), yeniden denemeler arasındaki maksimum gecikme süresini(maxRetryDelay) ve sadece geçici olduğu düşünülen SQL hata numaralarını(errorNumbersToAdd) ayarlayabildiğimizi görmekteyiz.

İlgilenenlerin faydalanması dileğiyle…
Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…

Bunlar da hoşunuza gidebilir...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*