Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Entity Framework Core Grundkurs

Domänenmodell aus bestehender Datenbank erstellen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Über Code First Migrations kann aus einem Domänenmodell eine Datenbank erstellt werden. Doch auch der umgekehrte Weg ist möglich: Über den Befehl Scaffold-DbContext kann aus der Datenbank der DbContext inklusive der Domänenklassen erzeugt werden.
05:13

Transkript

Über Migrations bietet das Entity Framework eine komfortable Möglichkeit, um aus einem Domain-Modell eine Datenbank zu erstellen. Aber was ist, wenn wir schon eine Datenbank haben, so wie in meinem Beispiel hier? Wie Sie sehen, habe ich hier auf meiner LocalDb eine Datenbank "Fahrtenbuch" mit mehreren Tabellen. Ich würde mir nun gerne zu dieser Datenbank den Datenbank-Kontext, sowie die Modell-Klassen automatisch generieren lassen. Dazu gehe ich wie folgt vor. Als Erstes lege ich den Ordner "Models" an. In diesen Ordner soll später alles herein generiert werden. Anschließend muss ich das Entity Framework zu meiner Anwendung hinzufügen. Dies geschieht am einfachsten, indem ich über den Paket-Manager, beziehungsweise die Paket-Manager-Konsole die entsprechenden Pakete installiere. Das wäre zum einen mal das Paket Microsoft.EntityFrameworkCore.SqlServer, da ich eine SQL Server-Datenbank habe. Außerdem hätte ich noch das Paket Microsoft.EntityFramework.Tools. Ich installiere also auch dies. Und da das aktuell noch in der Preview Phase ist zum Zeitpunkt der Aufnahme, muss ich -Pre dahinter schreiben. Und zu guter Letzt muss ich noch das Paket Microsoft.EntityFrameworkCore. SqlServer.Design installieren. Das letzte Paket ist das, was mir dann tatsächlich dabei hilft meinen Datenbank-Kontext automatisch erzeugen zu lassen. Der entsprechende Befehl zum Anlegen eines Datenbank-Kontextes aus der Datenbank heraus, der heißt Scaffold-DbContext. Und als erstes muss ich diesen Befehl meiner Datenbank-Verbindung übergeben. Und in meinem Fall ist das der Server=(localdb)\mssqllocaldb. Wir haben die Database=Fahrtenbuch. Und es handelt sich um eine Trusted_Connection. Was soviel bedeutet wie, dass ich über meine Windows Anmelde-Infromationen auf die Datenbank zugreife. Also muss ich als Nächstes einen Provider angeben. Und dieser Provider, der heißt jetzt Microsoft.EntityFrameworkCore.SqlServer. Und das ist im Endeffekt der Provider, der genutzt wird, um über ein Reverse Engineering gleich meinen Kontext zu erzeugen. Und zu guter Letzt kann ich optional auch noch ein Output Directory angeben. Und hier nehme ich den Ordner "Models". So, was nun geschieht, ist dass eine Verbindung zu meiner Datenbank hergestellt wird. Und im Hintergrund sind im Ordner "Models", wie wir jetzt schon sehen können, die entsprechenden Klassen angelegt worden. Wir haben zum einen den "Fahrtenbuch" Kontext. Der liegt auch hier bereits im korrekten Namespace. Wir sehen hier, dass die Methode "OnConfiguring" überschrieben worden ist. Und zwar wurde hier mein SQL Server Verbindung-String eingetragen. Und ich sehe schon als Erklärung, wir sollten das Ganze lieber irgendwie auslagern, zum Beispiel in eine Konfigurationsdatei. Wir sehen hier unten, dass die Methode "OnModelCreating" überschrieben worden ist, um einige der Eigenschaften zu setzen. Und darüber hinaus sehe ich hier meine entsprechenden Domain-Klassen, die für mich angelegt worden sind. Das Ganze sieht im Großen und Ganzen so aus, wie man sich das vorstellt. Bedeutet also, wir haben ganz simple Domain-Klassen, die keinerlei Abhängigkeit an das Entity Framework haben. Selbst auf Attribute wurde verzichtet. Stattdessen wurde alles in der Methode "OnModelСreating" über den ModelBuilder konfiguriert. Die Schritte, um aus einer bestehenden Datenbank einen Kontext hinzuzufügen, waren also gar nicht so schwer. Alles was ich machen musste, war: ich musste die Pakete Microsoft.EntityFrameworkCore.SqlServer, außerdem EntityFrameworkCore.Tools und EntityFrameworkCore.SqlServer.Design installieren. Anschließend konnte ich über den Befehl "Scaffold-DbContext" die entsprechenden Klassen generieren lassen. Übergeben an Scaffold-DbContext habe ich zum einen den Connection String, zum anderen den Provider und optional auch noch das Ausgabeverzeichnis. Wenn ich das Ganze noch einmal ausführe, dann sehen Sie übrigens, dass ich eine Fehlermeldung erhalte. Und mit dem Force-Fleck kann ich ein Überschreiben erzwingen. Das ist eine ganz spannende Geschichte, denn in älteren Versionen des Entity Frameworks, sprich in der Version 6, konnte ich zwar bereits ein Reverse Engineering durchführen, ich hätte aber keine Möglichkeit meine Entitäten zu aktualisieren. Und genau das kann ich jetzt über den Force-Parameter machen.

Entity Framework Core Grundkurs

Lernen Sie die Features von Microsofts O/R-Mapper kennen und wie Sie ihn in praktischen Anwendungen einsetzen.

2 Std. 29 min (29 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!