EDM: Code First – Datenbank erweitern

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Im Artikel “EDM: Der Code First-Ansatz” haben wir uns angesehen, wie Sie auf Basis eines frisch erstellten Entity Data Models eine Datenbank samt den nötigen Tabellen erstellen können – und zwar automatisch beim ersten Zugriff auf die noch nicht vorhandene Datenbank. Nun gehen wir einen Schritt weiter und zeigen, wie Sie auch noch Änderungen am Entity Data Model auf bestehende Datenbanken mit älterem Versionsstand übertragen und somit ein kombiniertes Update von Anwendung und Datenbank ausliefern können.

Aktualisierungen am bestehenden Datenmodell

Wir haben während der Entwicklung der Anwendung, wie wir es im Artikel EDM: Der Code First-Ansatz gelernt haben, die Freiheit, nach Lust und Laune die Zieldatenbank zu löschen und neu zu erstellen. Wohlgemerkt: während der Entwicklung! Sobald die Datenbank jedoch einmal mit Daten gefüllt ist oder sogar beim Kunden läuft, wollen Sie Aktualisierungen am Datenmodell sicher etwas eleganter und ohne Datenverlust übermitteln. Auch dazu bietet Code First Möglichkeiten.

Um Migrationen mit Code First durchzuführen, also die Änderungen erst am bestehenden Modell der Entitäten durchzuführen und diese dann auf die Tabellen der Datenbank zu übertragen, müssen wir zunächst die Migrationsfunktion aktivieren.

Dazu benötigen wir die Paket-Manager-Konsole, die Sie mit dem Menübefehl Ansicht|Weitere Fenster|Paket-Manager-Konsole einblenden. Ist dieser eingeblendet, wählen Sie oben rechts unter Standardprojekte den Namen des betroffenen Projekts aus, in diesem Fall CodeFirst. Dann geben Sie den folgenden Befehl ein:

PK> enable-migrations

Das Ergebnis finden Sie in Bild 1 vor.

Aktivieren der Migrationsfunktion

Bild 1: Aktivieren der Migrationsfunktion

Im Projekt haben sich nun einige Änderungen ergeben, die Sie direkt im Projektmappen-Explorer ablesen können. Dort finden Sie nun nämlich einen neuen Ordner namens Migrations (siehe Bild 2). Dieser enthält eine Datei namens Configuration.vb.

Die neue Konfigurationsdatei

Bild 2: Die neue Konfigurationsdatei

Diese Datei enthält vor allem die Seed-Methode. Dieser können Sie Anweisungen zum Schreiben von Daten in die Tabellen der Datenbank hinzufügen. Die Seed-Methode wird später beim Update des Datenbank-Backends ausgelöst. Deshalb fügen wir beispielsweise die folgenden Codezeilen zu dieser Methode in der Klasse Configuration.vb hinzu:

Namespace Migrations
     Friend NotInheritable Class Configuration 
         Inherits DbMigrationsConfiguration(Of Wordgenerator)
         Public Sub New()
             AutomaticMigrationsEnabled = False
             ContextKey = "CodeFirst.Wordgenerator"
         End Sub
         Protected Overrides Sub Seed(context As Wordgenerator)
             Dim anrede As New Anrede With {.Bezeichnung = "Herr"}
             context.Anreden.AddOrUpdate(Function(p) p.Bezeichnung, anrede)
             anrede = New Anrede With {.Bezeichnung = "Frau"}
             context.Anreden.AddOrUpdate(Function(p) p.Bezeichnung, anrede)
             anrede = New Anrede With {.Bezeichnung = "Firma"}
             context.Anreden.AddOrUpdate(Function(p) p.Bezeichnung, anrede)
         End Sub
     End Class
End Namespace

Damit wollen wir sicherstellen, dass zumindest die grundlegenden Daten der Anwendung, nämlich die Anreden, bereits in die Tabelle Anreden geschrieben werden – hier also die Datensätze mit den Werten Herr, Frau und Firma im Feld Bezeichnung.

Anschließend geben Sie einen weiteren Befehl in den Bereich Paket-Manager-Konsole ein (siehe Bild 3):

Initiale Migration

Bild 3: Initiale Migration

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar