Ekim 2021 ASP .NET MVC (1) 0
Code First yöntemiyle inşa ettiğimiz projelerimizde Database işlemleri güncellenmesi gerekecek noktalar kaçınılmaz olacaktır. Gerek kodlarda, gerekse de programın akışını sağlayan algoritmada düzenlenme olacaksa da bu yazımızı asıl ilgilendiren veritabanının güncellenmesi gereken durumlardır. Code First deseni uygulanan bir projede veritabanına direkt olarak müdahale etmek oldukça sakıncalıdır. Haliyle yapacağımız ekleme, çıkarma veyahut güncelleme durumlarını tabloları temsil eden classlar üzerinde gerçekleştirmeli ve Generate etmeliyiz.
Şimdiye kadar klasik manada tüm işlemleri SQL Server’dan fiziksel veritabanını silip, yeniden yükleyerek gözlemlemiş bulunmaktayız. Bu Migration yapıları sayesinde yaptığımız yenilikleri Visual Studio üzerinden hızlıca fiziksel veritabanına yansıtabilecek, kod kısmında yaptığımız değişiklikleri veritabanına yansıtmaya Migration diyoruz.
Migrations yapısını kullanabilmek için bize “Package Manager Console” penceresi gerekmektedir. Eğer ilgili pencere sizde açık değilse “Tools” -> “NuGet Package Manager” -> “Package Manager Console” kombinasyonunu takip ederek açabilirsiniz.
Migrations yapısını aktifleştirmek için “Package Manager Console” üzerinden “enable-migrations” komutunu kullanmalıyız.
Çalıştığınız projede aktifleştirme şekildeki gibi yapabilirsiniz.
İşlem başarıya tamamlandıktan sonra projemizde aşağıdaki gibi “Migrations” isimli bir klasör oluşmaktadır.
İlgili klasör içerisinde Migrations ayarlarını gerçekleştireceğimiz “Configuration.cs” isimli dosyamız oluşacaktır.
“Configuration.cs” sınıfını şöyle bir incelersek eğer “DbMigrationsConfiguration” sınıfından kalıtım alarak Context sınıfımıza işaretlenmiştir. Bunun yanında constructurında “AutomaticMigrationsEnabled” özelliğine “false” değeri atanmıştır. Bu(AutomaticMigrationsEnabled) özelliği sayesinde otomatik olarak veritabanını güncelletebiliyoruz. Haliyle “false” değerde olunca bu özellik kapalı olmaktadır. O yüzden “true” değerini set ediyoruz.
Bu işlemlerden sonra gelin veritabanını güncelleyelim.
Veritabanı “update-database” komutu sayesinde anında güncelleyebiliriz. Tabi ilk güncelleştirmede veritabanıda yoksa oluşturulmaktadır.
Yeni tablo eklediğinizde ya da var olan bir tabloya ekleme, çıkarma veyahut güncelleme yaptığınızda “update-database” komutunu çalıştırmanız yeterlidir.
“AutomaticMigrationDataLossAllowed” bu özellikte tablo güncelleme durumlarında, tablonun dolu olma olasılığında varsayılan olarak veriler güvence altına alınmaktadır. Bizde bu(AutomaticMigrationDataLossAllowed) özellik sayesinde bu durumu aşabilmekte ve verilerin güvenirliğini göz ardı edebilmekteyiz. Doğal olarak ilgili özellik “false” default değerine sahiptir. Biz constructurda ilgili özelliği çağırarak “true” değerini set edebiliriz.
Model değişiklikleri için migrasyon eklemek için “Add-Migration” komutunu kullanarak “Add-Migration [Migrasyon Adi]” prototipini uygulayabilirsiniz.