Już uruchomiłeś bazę danych po uruchomieniu aplikacji Code-First po raz pierwszy, ale co to jest po drugim uruchomieniu? Czy za każdym razem, gdy aplikacja jest uruchamiana, tworzy się nowa baza danych? A co z środowiskiem produkcyjnym? Jak zmienić bazę danych, gdy zmieniam model domeny? Aby poradzić sobie z takimi sytuacjami, musisz użyć jednej z polityk inicjalizacji bazy danych.
Istnieją cztery różne strategie inicjalizacji bazy danych:
- CreateDatabaseIfNotIstDoes:To jestdomyślnyprocedura inicjalizacji. Jak sama nazwa wskazuje, utworzy bazę danych, jeśli nie istnieje zgodnie z konfiguracją. Jednak jeśli zmienisz klasę modelu i uruchomisz aplikację z tym inicjalizatorem, wyrzucany jest wyjątek.
- DropCreateDatabaseIfModelChanges: Jeśli klasa modelu (klasa encji) uległa zmianie, ten inicjalizator usunie istniejącą bazę danych i utworzy nową. Więc nie musisz martwić się o utrzymanie schematów bazy danych, gdy klasy modeli się zmieniają.
- DropCreateDatabaseAlways: Jak sama nazwa wskazuje, ten inicjalizator usuwa istniejącą bazę danych za każdym razem, gdy uruchamiasz aplikację, niezależnie od tego, czy klasa modelu się zmieniła, czy nie. Jest to przydatne, gdy za każdym razem potrzebujesz nowej bazy danych, na przykład podczas jej tworzenia.
- Niestandardowy inicjalizator bazy danych: Możesz także stworzyć własny inicjalizator, jeśli powyższe nie spełnia Twoich wymagań, lub jeśli chcesz użyć powyższego inicjalizatora do procesu inicjalizacji innych baz danych.
Aby użyć jednej z powyższych strategii inicjalizacji bazy, musisz ustawić inicjalizator bazy danych używając klasy w klasie kontekstowej Database, jak pokazano poniżej:
Możesz także stworzyć niestandardowy inicjalizator bazy danych, dziedzicząc jeden z inicjalizatorów, jak pokazano poniżej:
W powyższym przykładzie SchoolDBInitializer to niestandardowa klasa inicjalizatora wyprowadzona z CreateDatabaseIfNotExists. To oddziela kod inicjalizacji bazy danych od klasy kontekstowej.
Ustaw inicjalizator bazy danych w pliku konfiguracyjnym
Możesz też ustawić inicjalizator bazy w pliku konfiguracyjnym. Na przykład, aby ustawić domyślne ustawienie wartości początkowej w app.config:
Możesz skonfigurować niestandardowy inicjalizator bazy danych w następujący sposób:
Close DB Initializer
Możesz wyłączyć inicjalizator bazy danych dla swojej aplikacji.Zakładając, że nie chcesz stracić istniejących danych w produkcji, możesz zamknąć inicjalizator, w następujący sposób:
Możesz też wyłączyć inicjalizator w pliku konfiguracyjnym, na przykład:
|