Entity Framework - Code First Migrations İşlemleri

Entity Framework - Code First Migrations İşlemleri

Code First ile oluşturduğumuz projelerde güncellenmesi eklenmesi gereken noktalar zaman zaman olacaktır. Code First kullanarak oluşturduğumuz projelerde veritabanına el ile müdahale edilmesi son derece sakıncalı bir işlemdir. Proje büyüdükçe veriler çoğaldıkça veritabanındaki bilgilerin silinme olasılığı ile karşı karşıya kalabiliriz. Bu gibi durumlarda veritabanı güncelleme işlemlerini projemizin kod tarafında bulunan her bir tabloya karşılık gelen class'lar üzerinde değişiklik yapmamız gerekmektedir. 

Şuana kadar Entity Framework kullanarak oluşturmuş olduğumuz projelerde fiziksel veritabanını silerek yeniden oluşturup yaptığımız değişiklikleri anlık olarak görebilirdik. Bu işlem EF'in veritabanını otomatik yeniden oluşturup seed methodunda oluşturduğumuz örnek verileri database'e kaydederdi. Fakat Code First ile projemizi oluşturup yayına aldıktan sonra veritabanına bu mantıkla müdahale etmek verilerinizin silinmesine neden olacaktır. Bu yazımız ise yayınlamış olduğunuz projenizin veritabanının silinmeden kolon veya tablo ekleme, güncelleme işlemlerinin Code First Migrations ile nasıl yapılacağını anlatmaktadır. 

Öncelikle projenizi Visual Studio'da açıp “Package Manager Console” aracını açmanız gerekmektedir. Eğer pencere sizde açık değilse “Tools” -> “NuGet Package Manager” -> “Package Manager Console” takip ederek açabilirsiniz.

Migrations yapısını aktifleştirmek için “Package Manager Console” üzerinden “enable-migrations” komutunu kullanmalıyız. Bu işlemi yaptıktan sonra projemize Migrations adında klasör oluşmuş olacaktır. Klasör içerisinde bulunan migrations ayarlarımızı gerçekleştireceğimiz iki tane dosya bulunmaktadır. Bunlar Configurations ve InitialCreate'dir. 
“Configuration.cs” sınıfının içerisinde bulunan AutomaticMigrationsEnabled = false; özelliğini "true" olarak değiştirip otomatik olarak veritabanını güncelletiyoruz. Migrations yapısında yapacağınız tablo güncelleme durumlarında, tablonun dolu olma olasılığında varsayılan olarak veriler güvence altına alınmaktadır. Bu durumu aşabilmek için AutomaticMigrationDataLossAllowed = true; özelliğini Configuration constructura ekleyebiliriz.

NOT: Configurations.cs dosyasında bulunan ContextKey = "name"; özelliği DataContext sınıfında bulunan Connection String name ile aynı olmalıdır. 

Tüm bu işlemlerden sonra Package Manager Console aracını açarak veritabanımızı Update-Database komutu ile güncelliyoruz. Configurations.cs dosyamızın son hali aşağıdaki gibidir.

 public Configuration()
  {
    AutomaticMigrationsEnabled = true;
    AutomaticMigrationDataLossAllowed = true;
    ContextKey = "Name";
   }

NOT: Code First yaklaşımı ile oluşturduğunuz projelerde daha sonradan veritabanında ekleme silme işlemleri yapılacaksa Migrations yapısını aktifleştirirken gelen Migrations klasöründe bulunan InitialCreate.cs dosyasında bulunan Create methodlarını silmemiz gerekir. Aksi takdirde projeyi yayına almak istediğinizde veritabanı hatası ile karşılaşılır.

Migrasyon Ekleme

Code First yaklaşımı ile oluşturmuş olduğunuz tabloda kolon ekleme işlemleri için Package Manager Console aracından Add-Migration komutunu girmeniz gerekmektedir.

Örneğin: Add-Migration ProductKolon - ProductKolon dememizin amacı ise veritabanımızda bulunan Product tablosuna Kolon adında bir kolon eklmektir. 

Yazar: Kerim ABAKBİGAN

Bize Ulaşın

Alanında uzman sektör deneyimli eğitmenlerle

kurumlara ve şirketlere özel sunduğumuz

eğitimlerimiz hakkında detaylı bilgi alın.

İletişime Geçin