Databázi jste už vytvořili po prvním spuštění aplikace Code-First, ale co je to po druhém spuštění? Vytváří se nová databáze pokaždé, když se aplikace spustí? A co produkční prostředí? Jak mohu změnit databázi, když změním doménový model? Pro řešení těchto scénářů musíte použít jednu z inicializačních politik databáze.
Existují čtyři různé strategie inicializace databáze:
- CreateDatabaseIfNotExists:Toto jevýchozíInicializační postup. Jak název napovídá, vytvoří databázi, pokud neexistuje, podle konfigurace. Pokud však změníte třídu modelu a pak spustíte aplikaci s tímto inicializérem, vyhodí se výjimka.
- DropCreateDatabaseIfModelChanges: Pokud se vaše třída modelu (třída entity) změnila, tento inicializátor smaže stávající databázi a vytvoří novou. Takže se nemusíte starat o údržbu databázových schémat, když se třídy modelů mění.
- DropCreateDatabaseAlways: Jak název napovídá, tento inicializátor maže existující databázi pokaždé, když spustíte svou aplikaci, bez ohledu na to, zda se třída modelu změnila či nikoliv. To je užitečné, když potřebujete novou databázi pokaždé, když spusťujete aplikaci, například při vývoji aplikace.
- Vlastní inicializátor databáze: Můžete si také vytvořit vlastní inicializátor, pokud výše uvedené nesplňuje vaše požadavky, nebo pokud chcete použít výše uvedený inicializér k inicializaci jiných databází.
Pro použití jedné z výše uvedených strategií inicializace databáze musíte nastavit inicializér databáze pomocí třídy v kontextové třídě databáze, jak je uvedeno níže:
Můžete také vytvořit vlastní inicializátor databáze dědičstvím jednoho z inicializérů, jak je uvedeno níže:
V uvedeném příkladu je SchoolDBInitializer vlastní třída inicializátoru odvozená z CreateDatabaseIfNotExists. Tím se odděluje inicializační kód databáze od kontextové třídy.
Nastavte DB Initializer v konfiguračním souboru
Inicializér databáze můžete také nastavit v konfiguračním souboru. Například pro nastavení výchozí hodnoty v app.config:
Můžete si nastavit vlastní inicializátor databáze následovně:
Zavřít inicializátor databáze
Můžete vypnout inicializátor databáze pro vaši aplikaci.Pokud nechcete přijít o existující data v produkci, můžete inicializér zavřít, a to následovně:
Inicializér můžete také vypnout v konfiguračním souboru, například:
|