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:
-
Database First: Veritabanı zaten mevcut olup, EF Core bu şemaya dayanarak model sınıflarını (varlıklar) ve
DbContextoluş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 -
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; } } -
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.