Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Datenzugriff mit ADO.NET und .NET Core

Context anlegen

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Der DB-Context stellt die Brücke zwischen dem Entity Framework Core und dem angesprochenen Modell her.
06:50

Transkript

Der Context ist nichts anderes als eine normale Klasse. Ich füge also hier eine weitere neue Klasse hinzu. Und kann dem Kind einen Namen geben. Da wir uns gerade im englischen Sprachraum befinden: LibraryDbContext. Diese Klasse möchte ich haben. Deren Inhalt sieht auf den ersten Blick etwas wild aus. Ist aber letztlich recht einfach. Ich löse hier erst die Referenzprobleme auf. Hier brauche ich eine Einführung des Namensraumes Microsoft.EntityFrameworkCore. Dann hier meine Konfiguration, die ich gleich übergeben werde. Dann brauche ich natürlich einen Zugriff auf das Modell, das ich gerade gebaut habe. Und ich brauche Zugriff auf die Logging-Funktionalität. Einmal kompilieren bitte. Er hat ein Problem mit Books. Weil; das war etwas zu viel. Das waren Klassen in Klassen, das brauche ich nicht. Das hat funktioniert. Hier muss ich noch einen weiteren Namensraum einfügen. Er ist immer noch nicht zufrieden. Das haben wir auch gleich. Das sollte es tun so weit. Dann zur Erklärung: Ich habe hier eine Klasse, die leitet von DbContext ab. DbContext stellt mir Entity Framework Core zur Verfügung. Damit habe ich die Grundfunktionalität, um einen DbContext anzulegen, der es mir erlaubt, auf die Daten zuzugreifen. Diese Klasse bekommt einen Konstruktor. Diesem Konstruktor übergebe ich einen IConfigurationRoot. Das ist etwa, was wir mit ADO.NET gemacht haben. Das heißt, ich übergebe diesen Root und Entity Framework nimmt sich was es braucht. Ich speichere eine Referenz auf diesen ConfigurationRoot. Den werde ich später nochmal brauchen, damit ich ihm genau sagen kann, welchen Teil er sich rausnehmen soll. Dann möchte ich Entity Framework etwas auf die Finger schauen. Ich möchte sehen, welche Statements gebaut werden, welche Abfragen gefeuert werden. Das kann ich, indem ich diese kleine Hilfsmethode aufrufe, zu der ich gleich komme. Entity Framework stellt eine Methode zur Verfügung, um sich selbst zu konfigurieren oder konfigurieren zu lassen. Das ist OnConfiguring. Dem wird ein Objekt übergeben, optionsBuilder. Damit kann ich sagen: Das ist der ConnectionString, den ich benutzen möchte. Den ziehe ich dann aus meiner Konfiguration raus. Den muss ich natürlich gleich noch anlegen. Dann kann ich sagen: Benutz den SQL-Server, das ist hier nämlich die Kernaussage, Zeile 26, und benutze dafür den ConnectionString, den ich vorher aus der Konfiguration ausgelesen habe. Als Nächstes muss ich nur noch die Basisklasse, die ich überschreibe, oder die Methode der Basisklasse aufrufen. Also hier geschieht die Übergabe des ConnectionString, den das Entity Framework benutzen soll. Dann besteht der Context aus einer Reihe von DbSet-Eigenschaften. Diese DbSet-Eigenschaften verweisen auf die entsprechenden Modellklassen, auf die Entitäten. Ein DbSet ist also eine Menge von einzelnen, in dem Fall Büchern, Autoren. Damit kann ich später den Zugriff durchführen. Wenn ich also den Context habe, eine Instanz des Context, kann ich sagen Books, Zugriff auf die Bücher, und kann dann sagen, gib mir das und das Buch, oder füg ein Buch hinzu, lösch ein Buch oder Ähnliches. Ich habe hier beide Entitäten aufgeführt, die ich habe, sowohl Bücher als auch Autoren. Es wäre aber durchaus zulässig, nur die Autoren zu verwenden. Dann könnte ich zwar nur über den Kontext direkt auf die Autoren zugreifen, aber durch die Autoren könnte ich auf die Bücher zugreifen. Entity Framework hat eine Art Graphing, es analysiert, welche Klassen wie miteinander in Beziehung stehen, und erkennt das dann automatisch auch. Und hat dann entsprechend die Möglichkeit, dass ich dann so einen Durchgriff mache. Hier im Context lege ich alle Klassen als DbSet-Eigenschaft an, auf die ich direkt zugreifen möchte. Hier habe ich ein Szenario, wo ich sowohl von den Autoren als auch von den Büchern kommen könnte. Dann habe ich hier eine kleine Erweiterung. Die stammt aus MSDN. Die ist nötig, damit ich das Loggen recht elegant in den Griff bekomme. Ich möchte, dass in die Konsole alle Anweisungen, die das Entity Framework ausführt, dass diese geloggt werden. Damit brauche ich eine kleine Methode, die mir das etwas vereinfacht. Das sind diese beiden Zeilen. Also müsste ich sagen, ich klinke mich in die Dependency Injection ein des Entity Framework, das mache ich mit GetService. Und füge dann die Konsole an der Stelle hinzu. Damit ich das nicht von Hand oben im Konstruktor machen muss, benutze ich die Methode, die ich hier aufrufe. Also keine große Hexenmagie an der Stelle. Der Kern ist, um das zusammenzufassen, Konfiguration über den Konstruktor übergeben, dann OnConfiguring, entsprechend die Konfiguration benutzen, den ConnectionString auslesen, Entity Framework Core sagen, welche Plattform verwendet werden soll, in dem Fall SqlServer. Dann müssen hier entsprechend über die DbSet-Eigenschaften alle Entitätenklassen angegeben werden, auf die ich direkt zugreifen möchte. Das war es eigentlich schon. Recht einfach. Wenn man sich das zehn Minuten anguckt, wird man sehen, da ist weder viel Neues im Vergleich zu Entity Framework 6 dabei; vielleicht dass Dependency Injection eingebaut ist. Aber im grundsätzlich ist es nichts Neues und es ist kein Hexenwerk.

Datenzugriff mit ADO.NET und .NET Core

Lernen Sie, wie mit Ihrer .NET Core-Anwendung auf relationale Datenbanken wie z.B. SQL Server oder SQLite zugreifen.

2 Std. 49 min (28 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Software:
Exklusiv für Abo-Kunden
Ihr(e) Trainer:
Erscheinungsdatum:12.04.2017
Laufzeit:2 Std. 49 min (28 Videos)

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!