Ai creat deja o bază de date după ce ai rulat aplicația Code-First pentru prima dată, dar ce este după ce ai început a doua oară? Se creează o bază de date nouă de fiecare dată când aplicația este rulată? Dar mediul de producție? Cum schimb baza de date când schimb modelul domeniului? Pentru a gestiona aceste scenarii, trebuie să folosești una dintre politicile de inițializare a bazei de date.
Există patru strategii diferite de inițializare a bazei de date:
- CreeazăBaza de DateIfNotExists:Acesta esteImplicitprocedura de inițializare. După cum sugerează și numele, va crea o bază de date dacă aceasta nu există conform configurației. Totuși, dacă schimbi clasa model și apoi rulezi aplicația cu acest inițializator, apare o excepție.
- DropCreateDatabaseIfModelChanges: Dacă clasa modelului (clasa entității) s-a schimbat, acest inițializator va șterge baza de date existentă și va crea una nouă. Astfel, nu trebuie să-ți faci griji pentru menținerea schemelor de baze de date când se schimbă clasele modelului.
- DropCreateDatabaseAlways: După cum sugerează și numele, acest inițializator șterge baza de date existentă de fiecare dată când rulezi aplicația, indiferent dacă clasa modelului s-a schimbat sau nu. Acest lucru este util atunci când ai nevoie de o bază de date nouă de fiecare dată când rulezi o aplicație, de exemplu la dezvoltarea unei aplicații.
- Inițializator personalizat de baze de date: De asemenea, poți crea propriul tău inițializator personalizat dacă cele de mai sus nu corespund cerințelor tale sau dacă dorești să folosești inițializatorul de mai sus pentru a efectua procesul de inițializare a altor baze de date.
Pentru a folosi una dintre strategiile de inițializare a bazei de date de mai sus, trebuie să setați Inițializatorul DB folosind clasa din clasa de context Baza de date, așa cum se arată mai jos:
De asemenea, poți crea un inițializator personalizat pentru baza de date prin moștenirea unuia dintre inițializatoare, așa cum se arată mai jos:
În exemplul de mai sus, SchoolDBInitializer este o clasă de inițializator personalizată derivată din CreateDatabaseIfNotExists. Aceasta separă codul de inițializare a bazei de date de clasa de context.
Configurează inițializatorul DB în fișierul de configurare
Poți seta și inițializatorul de bază de date în fișierul de configurare. De exemplu, pentru a seta setarea implicită a valorii inițiale în app.config:
Poți configura un inițializator personalizat pentru baza de date astfel:
Închide inițializatorul de baze de date
Poți dezactiva inițializatorul bazei de date pentru aplicația ta.Presupunând că nu vrei să pierzi datele existente în producție, poți închide inițializatorul, după cum urmează:
De asemenea, poți dezactiva inițializatorul din fișierul de configurare, de exemplu:
|