C# MİMARİSİ #26: EF Core Migrations, Interceptors ve Global Query Filters

1. Mimari Vizyon ve Çalışma Mekanizması

Entity Framework Core (EF Core) Migrations, Interceptors ve Global Query Filters, modern yazılım mimarisinde veri erişimini yönetmek ve optimize etmek için güçlü araçlardır. Bu makalede, bu teknolojilerin nasıl birlikte kullanılacağı ve kurumsal düzeyde nasıl uygulanacağına dair bir vizyon sunacağız.

EF Core Migrations, veritabanı şemasını sürüm kontrolü altında tutmamıza olanak tanır. Interceptors ise, EF Core tarafından yürütülen sorguları ve komutları etkileyen ve değiştiren bir mekanizmadır. Global Query Filters ise, tüm sorgulara otomatik olarak uygulanabilen filtrelerdir.

2. Kurumsal En İyi Pratikler (Best Practices)

EF Core Migrations, Interceptors ve Global Query Filters kullanırken dikkat edilmesi gereken bazı en iyi uygulamalar şunlardır:

  • Her migration, veritabanı şemasını güncellemek için ayrı bir adım olarak düşünülmeli ve sürüm kontrolü altında tutulmalıdır.
  • Interceptors, sorguların performansını etkileyebileceğinden, sadece gerekli durumlarda kullanılmalıdır.
  • Global Query Filters, tüm sorgulara uygulanır ve bu nedenle dikkatli kullanılmalıdır. Yanlış bir filtre, beklenmedik sonuçlar verebilir.

3. Gerçek Dünya Senaryosu ve Kod Mimarisi

Şimdi, EF Core Migrations, Interceptors ve Global Query Filters kullanarak bir senaryo inceleyelim. Bu örnekte, bir e-ticaret uygulamasında ürünleri filtrelemek için Global Query Filters kullanacağız.

// EF Core Migrations, Interceptors ve Global Query Filters - Mimari Uygulama Örneği
// Nasuh AKAY - Data Architecture Solutions

// Global Query Filter tanımlama
public class ApplicationDbContext : DbContext
{
    public DbSet Products { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity().HasQueryFilter(p => !p.IsDeleted);
    }
}

// Interceptor tanımlama
public class AuditInterceptor : SaveChangesInterceptor
{
    public override InterceptionResult SavingChanges(DbContextEventData eventData, InterceptionResult result)
    {
        // Sorguları ve komutları etkileme
        return base.SavingChanges(eventData, result);
    }
}

// Migration oluşturma
dotnet ef migrations add AddProductIsDeletedColumn
dotnet ef database update

4. Performans, Güvenlik ve Darboğaz (Bottleneck) Analizi

EF Core Migrations, Interceptors ve Global Query Filters kullanırken dikkat edilmesi gereken bazı performans, güvenlik ve darboğaz (bottleneck) noktaları şunlardır:

  • Global Query Filters, tüm sorgulara uygulanır ve bu nedenle performansı etkileyebilir. Özellikle büyük veritabanlarında, bu etkiler daha belirgin olabilir.
  • Interceptors, sorguların performansını etkileyebileceğinden, sadece gerekli durumlarda kullanılmalıdır.
  • Migrationlar, veritabanı şemasını güncellemek için ayrı bir adım olarak düşünülmeli ve sürüm kontrolü altında tutulmalıdır.

Mühendislik Notu: Bu teknik analiz ve mimari dokümantasyon, Nasuh AKAY (Data Architecture Solutions) tarafından kurumsal standartlar ve yüksek ölçeklenebilirlik prensipleri gözetilerek kaleme alınmıştır.

NasuhAkay
NasuhAkay

Nasuh Akay, 20 yılı aşkın IT deneyimine sahip; kurumsal teknoloji çözümleri, ERP sistemleri, yazılım geliştirme, veri yönetimi ve dijital dönüşüm alanlarında çalışmalar yürüten bir teknoloji profesyonelidir.

Kariyeri boyunca farklı sektörlerde edindiği deneyimlerini; teknoloji, yazılım, veri mimarisi ve iş süreçlerinin geliştirilmesi üzerine yoğunlaştırmıştır.

Bu blogda ERP çözümleri, SQL Server, yazılım geliştirme, yapay zekâ, dijital dönüşüm ve teknoloji dünyasındaki gelişmeler üzerine bilgi, deneyim ve teknik paylaşımlarını okuyucularla buluşturmaktadır.

Amacı, karmaşık teknik konuları anlaşılır bir dille ele almak, gerçek hayatta karşılaşılan problemlere yönelik uygulanabilir çözümler sunmak ve teknoloji alanındaki bilgi birikimini paylaşmaktır.

Articles: 1065

Leave a Reply

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir