CodeFirst yapısı kullanırken mvc mimarisinde modelde bir değişiklik yaptığınızda dolayısıyla database tarafında da derlendikten sonraki ilk database erişim aşamasında gerekli model değişikliklerini entity framework gerçekleştiriyor.
Bu değişiklikleri gerçekleştirirken database’i silip, yeniden oluşturuyor, Azure üzerinde kullanıyorsanız sonuçlar çok vahim, eski database tanımlamanızı tamamen silip sıfırdan database oluşturduğu için bütün ayarlar değişiyor, standard paket yaratıyor ve collation değiştiği için verileriniz de bozuluyor.
Azure management tool üzerinde seçtiğiniz collation “Turkish_CI_AI” değişerek default olan “SQL_Latin1_General_CP1_CI_AS” karakter setine geri dönmekte.
Dolayısıyla kullandığınız küçük ı harfleri yok olarak i olarak gözükmekte, bu da çok çirkin bir görüntü oluşturmaktadır.
Şimdi “bir tane alter database yazarım düzeltirim” diyeceksiniz ama azure’da “alter database” komutu kullanılamıyor.
Aşağıdaki kod bloğu azure kullanmıyorsanız işinizi görür.
Bu Durumu düzeltmenin yolu, code-first yapısında database’i silme ve yeniden yaratmayı kapatmak olacaktır. Collation sorununu çözsek bile azure üzerindeki db tanımlamalarımızı her seferinde sıfırdan yapmaktan kurtulmamız gerek.
Aşağıdaki kod bloğunda görülebileceği üzere SetInitializer(null) ile runtime’da database şema kontrolünü kapatmış oluyoruz, development ortamında yaptığımız değişiklikleri azure’a migration ile aktarmamız gerekiyor.