Databázu ste už vytvorili po prvom spustení aplikácie Code-First, ale čo je to po druhom spustení? Vytvára sa nová databáza zakaždým, keď sa spustí aplikácia? A čo produkčné prostredie? Ako zmením databázu, keď zmením doménový model? Na zvládnutie týchto scenárov musíte použiť jednu z inicializačných politík databázy.
Existujú štyri rôzne stratégie inicializácie databázy:
- CreateDatabaseIfNotExists:Toto jepredvolenýInicializačný postup. Ako názov napovedá, vytvorí databázu, ak neexistuje, podľa konfigurácie. Ak však zmeníte triedu modelu a potom spustíte aplikáciu s týmto inicializérom, vyhodí sa výnimka.
- DropCreateDatabaseIfModelChanges: Ak sa vaša trieda modelu (trieda entity) zmenila, tento inicializátor vymaže existujúcu databázu a vytvorí novú. Takže sa nemusíte starať o udržiavanie databázových schém, keď sa menia triedy modelov.
- DropCreateDatabaseAlways: Ako názov napovedá, tento inicializátor maže existujúcu databázu zakaždým, keď spustíte aplikáciu, bez ohľadu na to, či sa trieda modelu zmenila alebo nie. To je užitočné, keď potrebujete novú databázu zakaždým, keď spúšťate aplikáciu, napríklad pri vývoji aplikácie.
- Vlastný inicializátor databázy: Môžete si tiež vytvoriť vlastný inicializátor, ak vyššie uvedené požiadavky nespĺňa vaše požiadavky, alebo ak chcete použiť vyššie uvedený inicializátor na inicializáciu iných databáz.
Ak chcete použiť niektorú z vyššie uvedených stratégií inicializácie databázy, musíte nastaviť inicializátor databázy pomocou triedy v kontextovej triede databázy, ako je uvedené nižšie:
Môžete tiež vytvoriť vlastný databázový inicializátor dedičstvom jedného z inicializátorov, ako je uvedené nižšie:
V uvedenom príklade je SchoolDBInitializer vlastná trieda inicializátora odvodená z CreateDatabaseIfNotExists. Tým sa oddeľuje inicializačný kód databázy od kontextovej triedy.
Nastavte DB Initializer v konfiguračnom súbore
Môžeš tiež nastaviť inicializér databázy v konfiguračnom súbore. Napríklad nastavenie predvolenej počiatočnej hodnoty v app.config:
Môžete si nastaviť vlastný inicializátor databázy nasledovne:
Uzavrie inicializátor databázy
Môžeš vypnúť inicializér databázy pre svoju aplikáciu.Ak nechcete prísť o existujúce dáta v produkcii, môžete inicializér zatvoriť, nasledovne:
Môžeš tiež vypnúť inicializér v konfiguračnom súbore, napríklad:
|