Modern yazılım geliştirme süreçlerinde veritabanı yönetimi, uygulamanın sürdürülebilirliği ve ölçeklenebilirliği açısından kritik bir rol oynar. Özellikle .NET ekosisteminde çalışan geliştiriciler için Entity Framework Core (EF Core), veritabanı işlemlerini kolaylaştıran güçlü bir ORM (Object Relational Mapper) aracıdır. Bu yapının en önemli özelliklerinden biri ise Migration sistemidir.
EF Core Migration, uygulama içerisindeki model sınıflarının veritabanı şemasına otomatik olarak yansıtılmasını sağlayan bir mekanizmadır. Geliştirici, entity modellerinde yaptığı değişiklikleri migration komutları ile veritabanına uygulayabilir. Böylece manuel SQL yazmadan veritabanı şeması güncellenebilir.
Bu rehberde EF Core migration işlemleri, migration oluşturma, migration silme, veritabanını güncelleme, rollback işlemleri ve migration hatalarının çözümü gibi konular detaylı şekilde ele alınacaktır. Eğer .NET projelerinde veritabanı yönetimini doğru şekilde yapmak istiyorsanız, bu makale size kapsamlı bir yol haritası sunacaktır.
- EF Core Migration Nedir?
- EF Core Migration Nasıl Çalışır?
- EF Core Migration İçin Gerekli Kütüphaneler
- EF Core Migration Oluşturma
- EF Core Veritabanı Güncelleme
- Migration Silme İşlemi
- Migration Geri Alma (Rollback)
- EF Core Migration Hataları ve Çözümleri
- EF Core Migration En İyi Pratikleri
- Sık Sorulan Sorular
EF Core Migration Nedir?
EF Core migration, uygulama içerisindeki entity modellerinde yapılan değişikliklerin veritabanı şemasına otomatik olarak uygulanmasını sağlayan bir versiyonlama sistemidir.
Kısaca ifade etmek gerekirse migration sistemi, model değişikliklerini takip eder ve bu değişiklikleri SQL komutlarına dönüştürerek veritabanına uygular.
Örneğin aşağıdaki değişiklikler migration ile yönetilebilir:
- Yeni tablo oluşturma
- Mevcut tabloya yeni kolon ekleme
- Kolon silme
- Veri tipi değiştirme
- Foreign key ilişkileri oluşturma
- Index ekleme
Bu sayede geliştiriciler veritabanını manuel olarak düzenlemek yerine migration dosyaları üzerinden tüm değişiklikleri kontrol edebilir.
EF Core Migration Nasıl Çalışır?
EF Core migration sistemi, uygulamadaki model sınıfları ile veritabanı şemasını karşılaştırarak değişiklikleri tespit eder.
Bu süreç aşağıdaki adımlar ile gerçekleşir:
- Entity modellerinde değişiklik yapılır
- Migration oluşturulur
- Migration dosyası SQL komutları üretir
- Veritabanı update edilir
- EFMigrationsHistory tablosu güncellenir
EF Core migration sistemi ayrıca yapılan değişiklikleri __EFMigrationsHistory tablosunda saklar. Bu tablo hangi migration'ların uygulandığını takip eder.
| Migration Aşaması | Açıklama |
|---|---|
| Model Değişikliği | Entity sınıflarında yapılan değişiklikler |
| Migration Oluşturma | EF Core değişiklikleri algılar |
| Migration Dosyası | SQL komutları oluşturulur |
| Database Update | Veritabanı güncellenir |
EF Core Migration İçin Gerekli Kütüphaneler
EF Core migration işlemlerini gerçekleştirebilmek için projeye bazı NuGet paketlerinin eklenmesi gerekir.
- Microsoft.EntityFrameworkCore
- Microsoft.EntityFrameworkCore.Tools
- Microsoft.EntityFrameworkCore.Design
Eğer farklı bir veritabanı kullanıyorsanız buna uygun provider paketini de eklemeniz gerekir.
Veritabanı Sağlayıcı Örnekleri
| Veritabanı | NuGet Paketi |
|---|---|
| SQL Server | Microsoft.EntityFrameworkCore.SqlServer |
| PostgreSQL | Npgsql.EntityFrameworkCore.PostgreSQL |
| MySQL | Pomelo.EntityFrameworkCore.MySql |
| SQLite | Microsoft.EntityFrameworkCore.Sqlite |
Katmanlı Mimari Kullanımı
Eğer projede katmanlı mimari kullanılıyorsa kütüphanelerin doğru katmanlara eklenmesi önemlidir.
- Design paketi → UI veya API katmanı
- EF Core paketleri → DataAccess katmanı
EF Core Migration Oluşturma
Migration oluşturmak için iki farklı yöntem kullanılabilir:
- Package Manager Console
- CLI (Command Line Interface)
Package Manager Console ile Migration
add-migration InitialCreate
CLI ile Migration
dotnet ef migrations add InitialCreate
Bu komut çalıştırıldığında proje içerisinde Migrations klasörü oluşur ve migration dosyaları oluşturulur.
Migration dosyasında iki önemli metod bulunur:
- Up() → Veritabanına uygulanacak değişiklikler
- Down() → Geri alma işlemleri
EF Core Veritabanı Güncelleme
Migration oluşturulduktan sonra bu değişikliklerin veritabanına uygulanması gerekir. Bu işlem update-database komutu ile yapılır.
Package Manager Console
update-database
CLI Komutu
dotnet ef database update
Bu komut çalıştırıldığında aşağıdaki işlemler gerçekleşir:
- Veritabanı oluşturulur
- Tablolar oluşturulur
- Migration geçmişi kaydedilir
Migration Silme İşlemi
Bazen oluşturulan migration dosyasını kaldırmak gerekebilir. Bunun için remove komutu kullanılabilir.
Package Manager Console
remove-migration
CLI Komutu
dotnet ef migrations remove
Bu komut sadece en son oluşturulan migration dosyasını kaldırır.
Migration Geri Alma (Rollback)
EF Core migration sistemi sayesinde veritabanını eski bir migration sürümüne döndürmek mümkündür.
Bunun için aşağıdaki komut kullanılır:
dotnet ef database update MigrationAdi
Örneğin:
dotnet ef database update InitialCreate
Bu işlem veritabanını belirtilen migration sürümüne geri döndürür.
EF Core Migration Hataları ve Çözümleri
Migration işlemleri sırasında bazı hatalarla karşılaşabilirsiniz. En yaygın hatalar aşağıdaki gibidir.
DbContext Bulunamadı Hatası
Bu hata genellikle proje içerisinde birden fazla DbContext bulunduğunda ortaya çıkar.
dotnet ef migrations add InitialCreate --context AppDbContext
Migration Zaten Var Hatası
Aynı isimde migration oluşturulmaya çalışıldığında bu hata oluşur.
Connection String Hatası
appsettings.json içerisinde connection string yanlış tanımlanmış olabilir.
EF Core Migration En İyi Pratikleri
Migration işlemlerini daha sağlıklı yönetebilmek için bazı best practice kurallarına dikkat edilmelidir.
- Her değişiklik için ayrı migration oluşturun
- Migration isimlerini anlamlı seçin
- Production ortamında otomatik migration kullanmayın
- Migration dosyalarını versiyon kontrolünde saklayın
- Database backup alın
İyi Migration İsimlendirme Örnekleri
| Migration İsmi | Açıklama |
|---|---|
| AddUserTable | Kullanıcı tablosu ekleme |
| AddOrderColumn | Sipariş kolonu ekleme |
| UpdateProductPrice | Ürün fiyat alanı güncelleme |
Sık Sorulan Sorular
EF Core migration nedir?
EF Core migration, uygulamadaki entity modellerinde yapılan değişiklikleri otomatik olarak veritabanı şemasına uygulayan bir versiyonlama sistemidir. Bu sistem sayesinde veritabanı yapısı kod ile senkronize şekilde yönetilebilir.
Migration oluşturmadan database update yapılabilir mi?
Hayır. EF Core veritabanını güncellemek için önce migration oluşturulması gerekir. Migration dosyası veritabanına uygulanacak SQL komutlarını içerir.
Migration dosyaları silinirse ne olur?
Eğer migration dosyaları silinirse EF Core veritabanı geçmişini takip edemez. Bu nedenle migration dosyalarının versiyon kontrolünde saklanması önerilir.
EF Core migration production ortamında kullanılabilir mi?
Evet kullanılabilir ancak production ortamında migration işlemleri dikkatli yapılmalıdır. Yanlış migration veri kaybına neden olabilir.
EFMigrationsHistory tablosu nedir?
EF Core tarafından oluşturulan bu tablo, veritabanına uygulanmış migration kayıtlarını saklar. Böylece sistem hangi migration'ın uygulanıp uygulanmadığını takip edebilir.


Yorum Yap