Je hebt al een database aangemaakt nadat je de Code-First-applicatie voor het eerst hebt uitgevoerd, maar wat is het na het tweede starten? Wordt er elke keer dat de applicatie wordt uitgevoerd een nieuwe database aangemaakt? Hoe zit het met de productieomgeving? Hoe verander ik de database wanneer ik het domeinmodel verander? Om deze scenario's te behandelen, moet je een van de database-initialisatiebeleid gebruiken.
Er zijn vier verschillende strategieën voor database-initialisatie:
- CreateDatabaseIfNotExists:Dit isverstekInitialisatieprocedure. Zoals de naam al aangeeft, zal het een database aanmaken als deze volgens de configuratie niet bestaat. Als je echter de modelklasse verandert en vervolgens de applicatie met deze initializer uitvoert, wordt er een uitzondering gegooid.
- DropCreateDatabaseIfModelChanges: Als je modelklasse (entiteitsklasse) is veranderd, verwijdert deze initializer de bestaande database en maakt een nieuwe aan. Dus je hoeft je geen zorgen te maken over het onderhouden van databaseschema's wanneer modelklassen veranderen.
- DropCreateDatabaseAlways: Zoals de naam al aangeeft, verwijdert deze initializer de bestaande database elke keer dat je je applicatie uitvoert, ongeacht of je modelklasse is veranderd of niet. Dit is handig wanneer je elke keer dat je een applicatie draait een nieuwe database nodig hebt, bijvoorbeeld bij het ontwikkelen van een applicatie.
- Aangepaste database-initialiseerder: Je kunt ook je eigen aangepaste initializer maken als bovenstaande niet aan je eisen voldoet, of als je de bovenstaande initializer wilt gebruiken om het proces van het initialiseren van andere databases uit te voeren.
Om een van bovenstaande DB-initialisatiestrategieën te gebruiken, moet je de DB Initializer instellen met de klasse in de Database context-klasse, zoals hieronder weergegeven:
Je kunt ook een aangepaste database-initialisator maken door een van de initializers te erven, zoals hieronder weergegeven:
In het bovenstaande voorbeeld is de SchoolDBInitializer een aangepaste initialiseerklasser afgeleid van CreateDatabaseIfNotExists. Dit scheidt de database-initialisatiecode van de contextklasse.
Stel de DB Initializer in in het configuratiebestand
Je kunt ook de database-initializer instellen in het configuratiebestand. Bijvoorbeeld, om de standaard beginwaarde in app.config in te stellen:
Je kunt een aangepaste database-initializer als volgt instellen:
Sluit DB Initializer
Je kunt de database-initializer voor je applicatie uitschakelen.Als je bestaande data niet wilt verliezen tijdens productie, kun je de initializer sluiten, als volgt:
Je kunt de initializer ook uitschakelen in het configuratiebestand, bijvoorbeeld:
|