Sobes.tech
Middle

EF Core ekosistemi kapsamında hangi yaklaşımlar mevcuttur?

sobes.tech yapay zeka

AI'dan gelen yanıt

Entity Framework Core ekosistemi içinde, veritabanı şemasıyla çalışmak için üç temel yaklaşım vardır:

  1. Database First: Veritabanı zaten mevcut olup, EF Core bu şemaya dayanarak model sınıflarını (varlıklar) ve DbContext oluşturur.

    • Avantajlar: Mevcut bir veritabanıyla hızlı başlangıç, şema tamamen veritabanı tarafından kontrol edilir.
    • Dezavantajlar: Veritabanındaki değişiklikler kodun yeniden oluşturulmasını gerektirir, bu da özelleştirilmiş kodun üzerine yazılmasına neden olabilir.
    // Mevcut bir veritabanından oluşturmak için örnek komut
    // Scaffold-DbContext "Server=(localdb)\\mssqllocaldb;Database=MyDatabase;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
    
  2. Code First: Model sınıflarını (varlıklar) ve DbContext'i C# kodunda tanımlarsınız. EF Core, bu tanımlamalara dayanarak şemayı oluşturur veya günceller ve göçler (migrasyonlar) kullanır.

    • Avantajlar: Model kodu üzerinde tam kontrol, uygulama kod tabanıyla entegrasyon, şema değişikliklerini yönetmek için göçlerin kullanılması.
    • Dezavantajlar: Göçleri yönetme gerekliliği, şemadaki değişiklikler her zaman koddaki değişikliklerle başlar.
    // Code First yaklaşımında bir model sınıfı örneği
    public class Product
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public decimal Price { get; set; }
    }
    
  3. Model First: Tarihsel olarak eski EF sürümlerinde (pre-Core) bulunmasına rağmen, EF Core'da yerel ve bağımsız bir yaklaşım değildir; Database First veya Code First ile aynı anlamda değildir. Esasen, EF Core'da Model First, kodda modelleri yazarak (Code First gibi) ve bunlardan veritabanını oluşturarak özetlenir. Ayrı bir görsel model tasarımcısı yoktur, EF 6'da olduğu gibi. Bu nedenle, EF Core'da genellikle bir Code First varyantı olarak kabul edilir; burada modeli manuel olarak tanımlarsınız ve mevcut bir veritabanı kullanmazsınız.

Ana özellikler:

Yaklaşım İşe başlama noktası Veritabanı şemasını yönetme Değişiklik araçları
Database First Mevcut veritabanı Veritabanında manuel olarak Scaffold-DbContext
Code First Model sınıfları ve DbContext C#'ta EF Core göçleri Add-Migration, Update-Database
Model First (EF Core bağlamında) Model sınıfları ve DbContext C#'ta (mevcut olmayan veritabanı olmadan) EF Core göçleri veya başlatırken oluşturma Add-Migration, Update-Database

Yaklaşım seçimi, projenin başlangıç koşullarına ve ekibin tercihlerine bağlıdır. Code First, esnekliği ve geliştirme sürecine entegrasyonu nedeniyle yeni EF Core projelerinde en yaygın yaklaşımdır.