Code First Migration Islemleri

10 Ekim 2021 Pazar

Code First yöntemiyle insa ettigimiz projelerimizde Database islemleri güncellenmesi gerekecek noktalar kaçinilmaz olacaktir. Gerek kodlarda, gerekse de programin akisini saglayan algoritmada düzenlenme olacaksa da bu yazimizi asil ilgilendiren veritabaninin güncellenmesi gereken durumlardir. Code First deseni uygulanan bir projede veritabanina direkt olarak müdahale etmek oldukça sakincalidir. Haliyle yapacagimiz ekleme, çikarma veyahut güncelleme durumlarini tablolari temsil eden classlar üzerinde gerçeklestirmeli ve Generate etmeliyiz.

Simdiye kadar klasik manada tüm islemleri SQL Server’dan fiziksel veritabanini silip, yeniden yükleyerek gözlemlemis bulunmaktayiz. Bu Migration yapilari sayesinde yaptigimiz yenilikleri Visual Studio üzerinden hizlica fiziksel veritabanina yansitabilecek, kod kisminda yaptigimiz degisiklikleri veritabanina yansitmaya Migration diyoruz.

Migrations yapisini kullanabilmek için bize “Package Manager Console” penceresi gerekmektedir. Eger ilgili pencere sizde açik degilse “Tools” -> “NuGet Package Manager” -> “Package Manager Console” kombinasyonunu takip ederek açabilirsiniz.

Migrations yapisini aktiflestirmek için “Package Manager Console” üzerinden “enable-migrations” komutunu kullanmaliyiz.
Çalistiginiz projede aktiflestirme sekildeki gibi yapabilirsiniz.

Islem basariya tamamlandiktan sonra projemizde asagidaki gibi “Migrations” isimli bir klasör olusmaktadir.

Ilgili klasör içerisinde Migrations ayarlarini gerçeklestirecegimiz “Configuration.cs” isimli dosyamiz olusacaktir.

“Configuration.cs” sinifini söyle bir incelersek eger “DbMigrationsConfiguration” sinifindan kalitim alarak Context sinifimiza isaretlenmistir. Bunun yaninda constructurinda “AutomaticMigrationsEnabled” özelligine “false” degeri atanmistir. Bu(AutomaticMigrationsEnabled) özelligi sayesinde otomatik olarak veritabanini güncelletebiliyoruz. Haliyle “false” degerde olunca bu özellik kapali olmaktadir. O yüzden “true” degerini set ediyoruz.

Bu islemlerden sonra gelin veritabanini güncelleyelim.

Veritabani “update-database” komutu sayesinde aninda güncelleyebiliriz. Tabi ilk güncellestirmede veritabanida yoksa olusturulmaktadir.

Yeni tablo eklediginizde ya da var olan bir tabloya ekleme, çikarma veyahut güncelleme yaptiginizda “update-database” komutunu çalistirmaniz yeterlidir.

AutomaticMigrationDataLossAllowed Özelligi

“AutomaticMigrationDataLossAllowed” bu özellikte tablo güncelleme durumlarinda, tablonun dolu olma olasiliginda varsayilan olarak veriler güvence altina alinmaktadir. Bizde bu(AutomaticMigrationDataLossAllowed) özellik sayesinde bu durumu asabilmekte ve verilerin güvenirligini göz ardi edebilmekteyiz. Dogal olarak ilgili özellik “false” default degerine sahiptir. Biz constructurda ilgili özelligi çagirarak “true” degerini set edebiliriz.

Migrasyon Ekleme

Model degisiklikleri için migrasyon eklemek için “Add-Migration” komutunu kullanarak “Add-Migration [Migrasyon Adi]” prototipini uygulayabilirsiniz.

Bunları da beğenebilirsiniz.