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

Entity Framework Core Grundkurs

Was ist das Entity Framework?

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Das Entity Framework ist Microsofts empfohlene Datenzugriffstechnologie für neue .NET-Anwendungen. Mit Hilfe dieser Bibliothek können Entwickler für Datenabfrage und -persistenz durchgängig die .NET-Programmiersprache ihrer Wahl nutzen, ohne auf SQL ausweichen zu müssen.
08:43

Transkript

In diesem Video wollen wir uns einmal anschauen, was das Entity Framework Core eigentlich ist. Von der Grundidee her ist das Entity Framework Core ein Objektrelationaler Mapper. Das bedeutet, dass das Entity Framework Core uns einen objektorientierten Zugriff auf die Datenbank ermöglicht. Was es genau bedeutet, werde ich gleich erklären. Es ist eine Weiterentwicklung des Entity Frameworks, und zwar gab es schon vorher eine Entity Framework Version, nämlich die Versionen 6, 5, 4, oder 3.5. Und das Entity Framework Core ist eben nun eine leichtgewichtige und erweiterbare Version des Entity Frameworks. Es handelt sich dabei übrigens über eine komplette Neuentwicklung. Was die Aufgaben des Entity Frameworks nun angeht, sieht es so aus, dass wir uns zunächst einmal ansehen sollten, wie Daten eigentlich in der Datenbank abgebildet werden. In der Datenbank haben wir typischerweise Tabellen, wie zum Beispiel hier die Fahrer-Tabelle. Und diese Tabellen haben Felder, wie die id, Vorname oder Nachname. In einer größeren Datenbank haben wir natürlich nicht nur eine Tabelle, sondern mehrere, wie hier diese Fahrten-Tabelle zum Beispiel. Und zwischen diesen Tabellen gibt es Beziehungen. Diese Beziehungen, die werden durch Fremdschlüssel hergestellt. Bedeutet also, dass wir hier eine 1 zu einer Beziehung zwischen Fahrer und Fahrten haben. Bedeutet also, ein Fahrer hat keine, eine oder mehrere Fahrten. Und eine Fahrt hat immer einen Fahrer. Technisch benötigen wir dazu ein Fremdschlüssel, und zwar in diesem konkreten Fall die Fahrer-Id. Bedeutet also aus Datenbank-Sicht: kennt die Fahrt den Fahrer, der Fahrer kennt die Fahrt allerdings nicht. Ähnlich sieht es hier unten mit der nächsten Tabelle aus, mit der Fahrzeug-Tabelle. Hier sieht es wieder so aus, dass wir eine 1 zu N-Beziehung zwischen Fahrzeug und Fahrten haben. Heißt also für ein Fahrzeug gibt es keine, eine oder mehrere Fahrten. Hier haben wir auch die Fahrzeug-Id in der Fahrten-Tabelle gespeichert und das Fahrzeug wiederum. Das kennt den Fahrer über das Feld StandardFahrerId. Und hier gibt es auch eine Beziehung, dass also einem Fahrer ein, kein oder mehrere Fahrzeuge zugeordnet sind und ein Fahrzeug keinen oder einen Fahrer zugewiesen hat. Um solche Daten jetzt aus der Datenbank abzufragen, benutzen wir eine eigene Abfragesprache. Die nennt sich SQL. Und solche SQL-Anweisungen, die sehen aus wie zum Beispiel diese Zeile hier, die die Felder Id, Vorname, Nachname, Straße, Postleitzahl und Ort aus der Tabelle Fahrer selektiert. Oder wie dieses hier, wo wir also über einen SQL oder SQL statement, alle Fahrten des Fahrers mit der Id 1 selektieren. Oder hier selektieren wir alle Fahrten zum Fahrzeug mit der Id 12. In der objektorientierten Entwicklung sieht die Abbildung solcher Daten in der Regel etwas anders aus. Hier haben wir keine Tabellen mehr, sondern wir haben Klassen. Wie zum Beispiel hier die Fahrer-Klasse. Auf den ersten Blick sieht das ganz ähnlich aus, wie die Tabelle Fahrer, die wir eben gesehen haben. Es gibt jedoch einen entscheidenden Unterschied. Schauen Sie sich mal den letzten Eintrag an: Fahrten. Wenn Sie sich noch zurückerinnern, dann sah es eben im Datenbank-Diagramm so aus, dass der Fahrer die Fahrten nicht kannte. Hier hat der Fahrer jedoch eine Auflistung von Fahrten. Er kennt also die Fahrt. Umgekehrt, kennt die Fahrt auch den Fahrer, allerdings nicht durch einen Fremdschlüssel, also nicht durch eine Id, sondern es gibt ein konkretes Objekt. Das sehen Sie in der Mitte der Folie, nämlich das Fahrer-Objekt. Die Beziehung zwischen beiden ist auch bidirektional. Bedeutet also: ich kann sowohl vom Fahrer zu den Fahrten navigieren, als auch zurück. Das war in der Datenbank so erstmal nicht möglich. Ähnlich sieht es beim Fahrzeug aus. Auch hier schaut es so aus, dass das Fahrzeug die Liste der Fahrten kennt, die mit diesem Fahrzeug getätigt worden sind und die Fahrt kennt das Fahrzeug. Die Beziehung zwischen den Fahrzeugen und den Fahrern, die ist übrigens nur in eine Richtung abgebildet, was aber keine technische Restriktion ist, sondern es liegt einfach daran, dass in diesem Modell der Fahrer keine Auflistung von Fahrzeugen hat, sondern das Fahrzeug an sich nur den Fahrer kennt. Zu guter Letzt haben wir hier auch noch etwas, was wir so in unserer Tabelle gar nicht hatten, nämlich eine Enumeration von Fahrttypen: geschäftlich und privat. Das gab es in der Tabelle nicht, weil es hier einfach nur zwei Integer-Werte gab: 0 oder 1. Und über eine Enumeration in objektorientierten Entwicklung können wir diesen Nullen und Einsen halt tatsächlich Bedeutung zuweisen. Wenn wir jetzt Daten aus einer Datenbank in so ein Objekt mit füllen möchten, dann könnten wir ganz klassisch vorgehen. Bedeutet, wir müssten eine neue SqlConnection erzeugen. Mit dieser SqlConnection würden wir dann später ein Command erzeugen. Auf Basis dieses Commands würden wir dann einen Reader erzeugen. Und diesen Reader würden wir dann iterieren. Und für jeden Datensatz, der gefunden wird, sollen wir jetzt manuell ein Objekt erzeugen, sowie hier dieses Fahrer-Objekt, und dann die Werte einzeln befüllen. Natürlich wäre so eine Vorgehensweise, wie man sie früher machen musste, unheimlich aufwendig und fehleranfällig. Schauen Sie sich alleine mal den Block in der Zeile 6 an. Hier, wo wir den Fahrer initialisieren, müssen wir also die Positionen der einzelnen Felder kennen. Hier steht getInt(0), getString(1) und so weiter. Natürlich wenn ich in meinem Select Statement jetzt die Reihenfolge ändere, würde das zu Fehlern führen. Deswegen und weil wir hier zwei Sprachen mischen, nämlich SQL, wie wir das in der Zeile 3 sehen, wo wir "Select * from Fahrer" schreiben, und C#, ist ein Framework, wie das Entity Framework auch so hilfreich. Das Entity Framework erlaubt mir, wie gesagt, einen vollständigen objektorientierten Zugriff auf meine Datenbank. Das gleiche Beispiel, was wir eben gesehen haben, sieht mit dem Entity Framework zum Beispiel wie folgt aus. Ich erzeuge mir einen neuen Context und innerhalb dieses Context greife ich auf die Eigenschaft Fahrer zu. Rufe hier die Methode ToList auf und schon habe ich meine Liste von Fahrern. Das war es. Ich muss also weder SQL schreiben, noch muss ich selber die Ergebnisse in Objekte zurückübersetzten. Wie macht das Entity Framework das Ganze? Also, von der Grundidee haben wir unsere Anwendung und wir haben die Datenbank, in der sich die Daten befinden. In unserer Anwendung haben wir jetzt sogenannte Persistente Objekte, wie den Fahrer oder die Fahrt. Über den Entity Framework Context wollen wir jetzt diese persistenten Objekte aus der Datenbank laden oder hineinschreiben. Der Entity Framework Context nutzt dazu LINQ um Abfragen zu definieren. Und diese Abfragen, die werden dann mit Hilfe des Entity Frameworks übersetzt und anhand der Metadaten, die das Entity Framework über unser Objekt-Modell hat, dann tatsächlich in SQL Anfragen umgesetzt, damit die Daten aus der Datenbank geladen werden können und anschließend die persistenten Objekte erzeugt werden können. Diese persistenten Objekte sind erst einmal ganz normale .NET-Klassen ohne spezielle Abhängigkeiten. Bedeutet, ich muss also von keiner Basis-Klasse erben und ich muss auch keine Interfaces implementieren, sondern ich habe ganz normale Geschäftsobjekte. Und diese werden später vom Entity Framework Context verwaltet. Der Entity Framework Context, der bietet uns jetzt eine Verbindung zwischen den Objekten und unserer Datenbank, indem Objekte geladen werden können, indem Änderungen an diesen Objekten überwacht werden. Und diese Änderungen, die kann das Entity Framework später für uns dann speichern, und zwar im Rahmen einer sogenannten Geschäftstransaktion. Das bedeutet, dass das Entity Framework das "Unit Of Work" Muster implementiert, was soviel heißt wie, dass alle Operationen einer Geschäftstransaktion. Und eine Geschäftstransaktion könnte zum Beispiel ein Beispiel von eben sein, dass wir eine neue Fahrt hinzufügen möchten, dass also alle Operationen im Rahmen einer solchen Geschäftstransaktion automat durchgeführt werden. Heißt also, es wird entweder alles ausgeführt oder eben nichts. Als sechsten Bestandteil hatten wir LINQ. Und LINQ, das steht für Language Integrated Query. Wir haben also eine Abfragesprache auf Objektmengen, die direkter Bestandteil von C# und Visual Basic.NET ist. Wir beschreiben unsere Abfragen also ganz abstrakt in C# oder Visual Basic.NET. Und erst zur Laufzeit, wenn die durch einen entsprechenden Provider, wie zum Beispiel das Entity Framework in konkrete Abfragen also, in unserem Fall SQL, für das Zielsystem überführt. Wir können also zusammenfassen, dass das Entity Framework Core ein leichtgewichtiges O/R Mapping Framework ist, das LINQ in SQL übersetzten kann. Es abstrahiert für uns ADO.NET. Und es handelt sich um eine komplette Neuentwicklung. Bedeutet also, dass der alte Code nicht übernommen worden ist, sondern es wurde komplett neu aufgesetzt.

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!