Datenzugriff mit ADO.NET und .NET Core

ADO.NET Core API in der Kurzübersicht

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Hier erhalten Sie zum Einstieg eine Übersicht über die ADO.NET-(Core-)API: Die API-Basisklassen sind weitestgehend bekannt. Auch bei den provider-spezifischen Funktionen hat sich nicht viel getan. Der größte Unterschied: DataTable/DataSet sind tot.
05:51

Transkript

So, bevor wir wieder tippen, erst einmal ein wenig Theorie, eine kleine Orientierung, welche API enstprechend eine Rolle spielen, wenn ich mit ADO.NET Core unterwegs bin, und damit haben Sie so eine kleine Orientierung, damit Sie sich im Wald der APIs nicht verlaufen. Den ersten Blick für diejenigen unter Ihnen, die bereits mit ADO.NET gearbeitet haben, im alten oder im klassischen .NET-Framework, werden Sie sehen, das sieht ja aus wie vorher, und in der Tat ist das auch so. Die Basisklassen sind gleich geblieben, letztendlich gibt es für die wichtigen Objekte eine Db-Basisklasse, also DbConnection, DbCommand, DbParameter und so weiter und so fort. Und entsprechend, diese werden dann für die einzelnen Provider entsprechend implementiert. Die Verwendung von IDisposable ist ebenfalls gleich geblieben, das bedeutet, die Klassen, die IDisposable in der alten Version implementiert haben, tun das auch in der neuen, und da sollte man natürlich immer mit dem Using Block arbeiten an der Stelle. Ganz besonders vorne weg, wenn ich mit Verbindungen also DbConnection-abgeleiteten Klassen wie SqlConnection arbeite an der Stelle. Dann gibt es natürlich noch Provider-spezifische Funktionalitäten und die gab es auch vorher schon. SqlDependency und SqlBulkCopy, da werden Sie sehen, dass eine oder andere möglicherweise schlicht nicht mehr zu Verfügung steht, aber von der Idee her gibt es nach wie vor Provider-spezifische Funktionen. Dann ein kleines Intermezzo. Ein häufig sehr kontrovers diskutiertes Thema sind DataTable und DataSet, eine tolle Sache; oder sollte ich sie eher verteufeln? Man weiß es nicht. Meiner Meinung nach kann man durchaus an der ein oder anderen Stelle finden, dass ein DataTable eine gute Lösung ist, für das eine oder andere spezielle Problem. Dummerweise werden DataTables auch in ADO.NET verwendet, das bedeutet, da das .NET Core keine DataTables mehr kennt, aktuell zumindest, fallen diese Funktionalitäten entsprechend natürlich weg, das werde ich Ihnen dann im Laufe dieses Kapitels quasi zeigen dann. Das kann jetzt wieder toll finden, man kann das ein bisschen bedauern an der Stelle, zumindest gibt es da noch keinen Ersatz, das bedeutet, Sie können zum Beispiel, um ein prominentes Beispiel zu liefern, Sie können nicht den Inhalt einer Tabelle in ein DataTable oder den Inhalt eines Abfrage-Schemes in ein DataTable-Objekt übertragen, da gab es ja so was wie DataAdapter und Ähnlichem. Das funktioniert nicht, weil es schlicht kein DataTable gibt. Ich kann auch das Schema der Rückgabemenge nicht einfach abfragen, weil das Ziel der entsprechenden Funktion wieder ein DataTable gewesen wäre, auch da, siehe oben, gibt es nicht. Insofern, das ist schon relativ schade an der Stelle, dass ich da dann doch relativ komplexe Ersatzlösungen schaffen muss bzw. es zur Zeit schlicht und ergreifend noch überhaupt keinen Ersatz gibt an der Stelle. So, und um Ihnen zu zeigen, dass "System.Data.DataTable" in der Tat nicht mehr unter uns weilt, bin ich zurück in unsere "Hallo Welt"-Anwendung gewechselt, ich kann jetzt einfach mal versuchen, gegen alle Widerstände ein entsprechenden VariableTable zu deklarieren, und das funktioniert nicht. Aber jetzt nicht, weil DataTable an sich nicht existiert, sondern weil hier schon ein Problem mit Data vorliegt. Das liegt daran, dass ich zwar das .NET Core 1.1 installiert habe, aber da es sehr modular ist, fehlt natürlich der Teil, der für SystemData zuständig ist, also wo auch entsprechend die ADO.NET API zu finden ist, und die muss ich erst einmal hinzufügen. Ein einfacher Weg ist, dass ich hier über das Kontextmenü des Projektes gehe, in den NuGet Package Manager, da kann ich dann entsprechend auf "Browse" wechseln, und dann kann ich einfach mal versuchen, "system.data" einzugeben. Sie sehen, es gibt schon eine ganze Reihe, und was ich brauche ist das "System.Data.SqlClient". Mit schlappen 850.000 Downloads schon relativ oft verwendet. Es ist die Latest stable version 4.3., und ich installiere die einfach mal. Es wird jetzt heruntergezogen aus dem Internet. Das sind die Kompnenten, die ich dafür benötige. Das lasse ich besser eingeschaltet. Das möchte ich akzeptieren. Brauche einen kleinen Moment. Führt wieder einen Restore durch, das heißt, jetzt wird alles an Ort und Stelle gebracht, damit das Programm kompiliert werden kann, und überraschenderweise kompiliert es auch, und das obwohl ich Ihnen gerade erzählt habe, es gibt kein DataTable. Ich habe ein bisschen gelogen vielleicht, aber auch nur ein ganz klein wenig. Also, wenn wir in die Definition von DataTable hineingehen, dann sehen Sie rein technisch gibt es die Klasse, aber Sie sehen, zumindest kein Inhalt, und damit natürlich auch kein Bug, eine bugfreie Implementierung sozusagen. Letztendlich aber natürlich keine Funktionalität dahinter, und das bedeutet, dass diese Klasse nur als Platzhalter vorliegt, damit an der einen oder anderen Stelle, um ein Interface, um eine Schnittstelle zu befriedigen, dieses Objekt verwendet werden kann, obwohl da nicht wirklich was dahinter steckt. Insofern, da komme ich nicht wirklich weiter, das heißt, obwohl die Klasse rein technisch existiert, existiert das DataTable-Objekt nicht, und wenn ich versuche, "System.Data.DataSet" ans Rennen zu bekommen, dann sieht es sogar noch ein bisschen anders aus, also auch ein "DataSet" und auch die Beziehungen zwischen einzelnen Tabellen in einem "DataSet", all das existiert schlicht und ergreifend nicht.

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
Erscheinungsdatum:12.04.2017

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!