Code-First uygulamasını ilk kez çalıştırdıktan sonra zaten bir veritabanı oluşturdunuz, peki ikinci kez başlattıktan sonra veritabanı nedir? Uygulama her çalıştırıldığında yeni bir veritabanı mı oluşturuluyor? Peki ya üretim ortamı? Alan modelini değiştirdiğimde veritabanını nasıl değiştirebilirim? Bu senaryoları yönetmek için veritabanı başlatma politikalarından birini kullanmanız gerekir.
Dört farklı veritabanı başlatma stratejisi vardır:
- CreateDatabaseIfNotExists:Butemerrütbaşlatma prosedürü. Adından da anlaşılacağı gibi, yapılandırmaya göre mevcut değilse veritabanı oluşturur. Ancak, model sınıfını değiştirip uygulamayı bu başlatıcıyla çalıştırırsanız, bir istisna oluşur.
- DropCreateDatabaseIfModelChanges: Model sınıfınız (varlık sınıfı) değiştiyse, bu başlatıcı mevcut veritabanını silip yenisini oluşturur. Yani model sınıfları değiştiğinde veritabanı şemalarını sürdürmek konusunda endişelenmenize gerek yok.
- DropCreateDatabaseAlways: Adından da anlaşılacağı gibi, bu başlatıcı, uygulama çalıştırdığınızda mevcut veritabanını siler; model sınıfınız değişmiş olup olmamasına bakılmaksızın. Bu, her uygulama çalıştırdığınızda yeni bir veritabanı ihtiyacınız olduğunda, örneğin bir uygulama geliştirirken faydalıdır.
- Özel veritabanı başlatıcısı: Yukarıdaki gereksinimlerinizi karşılamazsa veya yukarıdaki başlatıcıyı diğer veritabanlarını başlatma işlemi için kullanmak isterseniz kendi özel başlatıcınızı da oluşturabilirsiniz.
Yukarıdaki veritabanı başlatma stratejilerinden birini kullanmak için, aşağıdaki gibi Veritabanı bağlam sınıfındaki sınıfı kullanarak DB Başlatıcısını ayarlamanız gerekir:
Ayrıca, aşağıda gösterildiği gibi, başlatıcılardan birini devralarak özel bir veritabanı başlatıcısı oluşturabilirsiniz:
Yukarıdaki örnekte, SchoolDBInitializer, CreateDatabaseIfNotExists'ten türetilen özel bir başlatıcı sınıfıdır. Bu, veritabanı başlatma kodunu bağlam sınıfından ayırır.
Yapılandırma dosyasında DB Başlatıcısını kur
Ayrıca veritabanı başlatıcısını yapılandırma dosyasında da ayarlayabilirsiniz. Örneğin, app.config'de varsayılan başlangıç değer ayarını ayarlamak için:
Aşağıdaki gibi özel bir veritabanı başlatıcısı kurabilirsiniz:
DB Başlatıcısını Kapat
Uygulamanız için veritabanı başlatıcısını kapatabilirsiniz.Üretimdeki mevcut verileri kaybetmek istemiyorsanız, başlatıcıyı kapatabilirsiniz, aşağıdaki gibi:
Ayrıca yapılandırma dosyasında başlatıcıyı kapatabilirsiniz, örneğin:
|