Du har allerede opprettet en database etter å ha kjørt Code-First-applikasjonen for første gang, men hva er det etter å ha startet andre gang? Opprettes en ny database hver gang applikasjonen kjøres? Hva med produksjonsmiljøet? Hvordan endrer jeg databasen når jeg endrer domenemodellen? For å håndtere disse scenarioene må du bruke en av databaseinitialiseringspolicyene.
Det finnes fire forskjellige strategier for databaseinitialisering:
- CreateDatabaseIfNotExists:Dette erstandardInitialiseringsprosedyre. Som navnet antyder, vil den opprette en database hvis den ikke eksisterer i henhold til konfigurasjonen. Men hvis du endrer modellklassen og deretter kjører applikasjonen med denne initialisatoren, kastes et unntak.
- DropCreateDatabaseIfModelChanges: Hvis modellklassen din (entitetsklassen) har endret seg, vil denne initialisatoren slette den eksisterende databasen og opprette en ny. Så du slipper å bekymre deg for å vedlikeholde databaseskjemaer når modellklasser endres.
- DropCreateDatabaseAlways: Som navnet antyder, sletter denne initialisatoren den eksisterende databasen hver gang du kjører applikasjonen, uavhengig av om modellklassen din har endret seg eller ikke. Dette er nyttig når du trenger en ny database hver gang du kjører en applikasjon, for eksempel når du utvikler en applikasjon.
- Egendefinert databaseinitialisator: Du kan også lage din egen egendefinerte initialisator hvis ovenstående ikke oppfyller kravene dine, eller hvis du vil bruke initialisatoren ovenfor til å initialisere andre databaser.
For å bruke en av de ovennevnte DB-initialiseringsstrategiene må du sette DB Initializer ved å bruke klassen i Database-kontekstklassen, som vist nedenfor:
Du kan også lage en egendefinert databaseinitialisator ved å arve en av initialisatorene, som vist nedenfor:
I eksempelet ovenfor er SchoolDBInitializer en egendefinert initialiseringsklasse avledet fra CreateDatabaseIfNotExists. Dette skiller databaseinitialiseringskoden fra kontekstklassen.
Sett opp DB Initializer i konfigurasjonsfilen
Du kan også sette databaseinitialisatoren i konfigurasjonsfilen. For eksempel, for å sette standard startverdiinnstilling i app.config:
Du kan sette opp en egendefinert databaseinitialisator som følger:
Lukk DB-initialisator
Du kan slå av databaseinitialisatoren for applikasjonen din.Forutsatt at du ikke vil miste eksisterende data i produksjon, kan du lukke initializeren, som følger:
Du kan også slå av initialisatoren i konfigurasjonsfilen, for eksempel:
|