Sie haben bereits eine Datenbank erstellt, nachdem Sie die Code-First-Anwendung zum ersten Mal ausgeführt haben, aber was ist das nach dem zweiten Start? Wird jedes Mal, wenn die Anwendung ausgeführt wird, eine neue Datenbank erstellt? Wie sieht es mit der Produktionsumgebung aus? Wie ändere ich die Datenbank, wenn ich das Domänenmodell ändere? Um diese Szenarien zu bewältigen, müssen Sie eine der Datenbankinitialisierungsrichtlinien verwenden.
Es gibt vier verschiedene Datenbankinitialisierungsstrategien:
- CreateDatabaseIfNotExists:Das istVorgabeInitialisierungsprozedur. Wie der Name schon sagt, wird eine Datenbank erstellt, falls diese gemäß der Konfiguration nicht existiert. Wenn du jedoch die Modellklasse änderst und dann die Anwendung mit diesem Initialisierer ausführst, wird eine Ausnahme ausgelöst.
- DropCreateDatabaseIfModelChanges: Wenn sich Ihre Modellklasse (Entitätsklasse) geändert hat, löscht dieser Initialisierer die bestehende Datenbank und erstellt eine neue. Du musst dir also keine Sorgen machen, Datenbankschemata zu pflegen, wenn sich Modellklassen ändern.
- DropCreateDatabaseAlways: Wie der Name schon sagt, löscht dieser Initialisierer die bestehende Datenbank jedes Mal, wenn Sie Ihre Anwendung ausführen, unabhängig davon, ob sich Ihre Modellklasse geändert hat oder nicht. Das ist nützlich, wenn Sie bei jeder Ausführung einer Anwendung eine neue Datenbank benötigen, zum Beispiel bei der Entwicklung einer Anwendung.
- Benutzerdefinierter Datenbankinitialisierer: Du kannst auch deinen eigenen benutzerdefinierten Initialisierer erstellen, wenn der oben genannte nicht deinen Anforderungen entspricht, oder wenn du den oben genannten Initialisierer verwenden möchtest, um den Prozess der Initialisierung anderer Datenbanken durchzuführen.
Um eine der oben genannten Datenbankinitialisierungsstrategien zu verwenden, müssen Sie den DB Initializer mit der Klasse in der Datenbank-Kontextklasse festlegen, wie unten gezeigt:
Sie können auch einen benutzerdefinierten Datenbankinitialisierer erstellen, indem Sie einen der Initialisierer erben, wie unten gezeigt:
Im obigen Beispiel ist der SchoolDBInitializer eine benutzerdefinierte Initialisierer-Klasse, die von CreateDatabaseIfNotExists abgeleitet ist. Dies trennt den Datenbankinitialisierungscode von der Kontextklasse.
Richte den DB-Initializer in der Konfigurationsdatei ein
Du kannst auch den Datenbank-Initialisierer in der Konfigurationsdatei einstellen. Zum Beispiel um die Standard-Anfangswerteinstellung in app.config festzulegen:
Sie können einen benutzerdefinierten Datenbankinitialisierer wie folgt einrichten:
DB-Initializer schließen
Du kannst den Datenbankinitialisierer für deine Anwendung deaktivieren.Vorausgesetzt, du möchtest keine vorhandenen Daten in der Produktion verlieren, kannst du den Initialisierer schließen, wie folgt:
Du kannst den Initialisierer auch in der Konfigurationsdatei ausschalten, zum Beispiel:
|