Du har allerede oprettet en database efter at have kørt Code-First-applikationen første gang, men hvad er det efter anden start? Bliver der oprettet en ny database hver gang applikationen køres? Hvad med produktionsmiljøet? Hvordan ændrer jeg databasen, når jeg ændrer domænemodellen? For at håndtere disse scenarier skal du bruge en af databaseinitialiseringspolitikkerne.
Der findes fire forskellige strategier for databaseinitialisering:
- CreateDatabaseIfNotExists:Det her erstandardInitialiseringsprocedure. Som navnet antyder, vil den oprette en database, hvis den ikke eksisterer ifølge konfigurationen. Men hvis du ændrer modelklassen og derefter kører applikationen med denne initializer, kastes en undtagelse.
- DropCreateDatabaseIfModelChanges: Hvis din modelklasse (entitetsklasse) er ændret, vil denne initializer slette den eksisterende database og oprette en ny. Så du behøver ikke bekymre dig om at vedligeholde databaseskemaer, når modelklasser ændrer sig.
- DropCreateDatabaseAlways: Som navnet antyder, sletter denne initializer den eksisterende database hver gang du kører din applikation, uanset om din modelklasse er ændret eller ej. Dette er nyttigt, når du har brug for en ny database hver gang, du kører en applikation, for eksempel når du udvikler en applikation.
- Brugerdefineret databaseinitializer: Du kan også oprette din egen brugerdefinerede initializer, hvis ovenstående ikke opfylder dine krav, eller hvis du vil bruge ovenstående initializer til at initialisere andre databaser.
For at bruge en af ovenstående database-initialiseringsstrategier skal du sætte DB Initializer ved at bruge klassen i Database-kontekstklassen, som vist nedenfor:
Du kan også oprette en brugerdefineret databaseinitialisator ved at arve en af initializerne, som vist nedenfor:
I eksemplet ovenfor er SchoolDBInitializer en brugerdefineret initialiser-klasse, der stammer fra CreateDatabaseIfNotExists. Dette adskiller databaseinitialiseringskoden fra kontekstklassen.
Opsæt DB Initializer i konfigurationsfilen
Du kan også sætte database-initializeren i konfigurationsfilen. For eksempel for at sætte standardindstillingen for startværdien i app.config:
Du kan opsætte en brugerdefineret databaseinitialisator som følger:
Luk DB Initializer
Du kan slå databaseinitialisatoren fra for din applikation.Hvis du ikke vil miste eksisterende data i produktion, kan du lukke initializeren, som følger:
Du kan også slå initializeren fra i konfigurationsfilen, for eksempel:
|