EDM: Code First – Datenbank erweitern

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

Access, SQL und Cloud Automation

Unser exklusives Angebot für Dich!

VB-Entwickler
12,50 € im Monat*

(Gilt für den Abschluss eines Jahres-Abonnements.)

Hier geht’s weiter →

Die ersten 4 Wochen kostenlos testen – voller Zugriff auf alle Artikel, vollständigen Code und Beispieldatenbanken. Kein Risiko: Wenn es nicht passt, kündigst Du einfach innerhalb der ersten vier Wochen.

PayPal VISA Mastercard SEPA
Kostenlos & unverbindlich

Oder hast Du eine konkrete Frage zu Deiner eigenen Access-Anwendung?

Vielleicht stellt Deine Anwendung Dich vor eine Herausforderung, zu der Du bisher keine Lösung findest. Schlechte Performance, kein ausreichender Zugriffsschutz, Du bist unsicher über Dein Datenmodell oder Dein Code liefert unerklärliche Fehler?

In unserem kostenlosen Access-Audit schaut sich André Minhorst persönlich gemeinsam mit Dir Deine Lösung per Zoom an – und zeigt Dir, wo Datenmodell, VBA-Code, Ergonomie und Sicherheit Optimierungspotenzial bieten.

Jetzt kostenloses Access-Audit anfordern →