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.

Datenzugriff mit ADO.NET und .NET Core

Datenbank erstellen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Im zweiten Schritt legen Sie die Verbindung zur Datenbank fest. Die Einrichtung per Dialogmenü ist noch fehlerhaft, das macht das manuelle Bearbeiten einer XML-Datei nötig, damit die DB für Visual Studio bzw. den dort entworfenen Zugriffscode erreichbar ist. Das eine oder andere NuGet-Paket sorgt für JSON-Unterstützung, um die DB-Zugriffskonfiguration entsprechend auszulagern.
12:42

Transkript

So, dann wollen wir uns das Datenbankprojekt mal nehmen und mit dessen Hilfe eine Datenbank erschaffen. Wenn ich das Projekt aufmache, nur kurz als Zusammenfassung, sehe ich hier alle Objekte, die ich benötige, eine Tabelle und Stop Procedures und Table Types und Ähnliches. Das heißt, ich gehe hin, rechte Maustaste "Publish", und wähle hier die entsprechende Zieldatenbank aus, die ist möglicherweise hier oben schon zu finden, vielleicht ist sie es nicht. Hier habe ich die Verbindung, ich kann mir hier unten die Details nochmal anschauen. Ich kann auf "Test Connection" klicken, allerdings, Achtung, hier steht der neue Name drin, das heißt, wenn der Name nicht vorhanden ist, dann muss ich hier natürlich "Master" reinschreiben, sonst kann zwar die Verbindung theoretisch aufbauen, bekommt aber trotzdem eine Fehlermeldung, weil die Datenbank noch nicht da ist. Wenn ich aber Master drinstehen habe, dann sollte das soweit funktionieren. Wenn ich den Dialog dann verlasse, dann nochmal reingehe, dann sehen Sie, trägt der da auch den Namen der Datenbank wieder ein. Wichtig ist, dass hier Benutzername und Kennwort drinstehen. Dummerweise funktioniert das auf die Art und Weise nicht ganz fehlerfrei, scheint ein kleiner Bug drin zu sein, weil wenn ich hier oben den Connection String durchgehe, dann sehen Sie alles, nur kein Kennwort, irgendwo müsste das ja auch stehen. Deshalb gibt es einen kleinen Trick. Ich kann das als Profil abspeichern, was ich jetzt hier eingestellt habe, das ist eine kleine XML-Datei, die taucht dann hier auch auf, und bevor ich mir den Fehler einhandle, breche ich den Dialog hier ab. bearbeite diese Datei, XML-Editor bietet sich dafür an, dann sehe ich hier nochmal den Connection String, und selbst bei genauem Hingucken, das Kennwort fehlt schlichtergreifend, obwohl "Persistent Security Info" auf "True" gestellt ist, das sollte eigentlich nur zu bringen, sie abzuspeichern, die Information des Kennworts; tut er aber nicht. Ich gehe jetzt hier hin und schreibe das von Hand rein. "P@ssw0rd99". So, kann das abspeichern. und kann dann einfach dieses Profil nehmen und entsprechend auf "Publish" klicken. Wem das zu kompliziert ist, ich werde diesem Kurs auch ein direktes Backup für den SQL-Server mitgeben, der kann einfach das Backup einspielen, es sollte dann aber so aussehen, dass hier auf der verwendeten SQL-Serverinstanz die Datenbank auftaucht und ich hier die Tabelle habe und zum Beispiel auch hier die "Stored Procedures" an der Stelle. Damit haben wir erst einmal die Datenbank geschaffen, um weiter damit rumspielen zu können und es geht wieder zurück ins Visual Studio. Hier testen wir direkt auch mal die neue Datenbank aus und tauschen die Master-Datenbank gegen unsere neue Datenbank aus, lassen das Ganze laufen. Das sollte immer noch einen Fehler geben, Moment. Das Kennwort möchte natürlich auch korrigiert werden. So, das sollte jetzt aber funktionieren. Das heißt, das Kennwort wieder zurücksetzen, das hatten wir ja testweise mal verändert, das sollte jetzt funktionieren, wenn ich jetzt wieder auf die Verbindung gehe, sehen Sie Status "Offen". Dann stoppen wir das mal. Der nächste Punkt, den ich ganz gerne korrigieren wollen würde, wäre, dass wir das in die Konfiguration packen, das ist jetzt nicht mehr ganz so einfach als es noch mit dem klassischen .NET war. Ich muss also erstmal hingehen und wieder in den NuGet Manager. und muss für Microsoft.Extensions.Configuration, Sie sehen das hier, ich habe es vorher ausprobiert. Letztendlich müssen Sie über Microsoft.Extensions.Configuration gehen, da können Sie diese einmal installieren, dass ist dann generell die Erweiterung, um mit Konfigurationen zu arbeiten. Das lasse ich einmal laufen. Dann ist die Frage, wie man die Konfiguration ablegen möchte. Klassisch wäre das natürlich mit XML. Ich kann aber hier, wenn ich möchte, unterschiedliche Erweiterungen hinzufügen, zum Beispiel für XML, wäre eine Möglichkeit. JSON, das ist eine andere. Ich kann eine Erweiterung zum Beispiel für INI-Dateien, das heißt Konfigurationen in INI-Dateien, wer das möchte. Ich könnte sagen "SQL Azure" nicht SQL, sondern "Azure Vault" natürlich. AzureKeyVault und kann da auf sehr unterschiedliche Art und Weise meine Konfiguration unterbringen. Ganz so dramatisch möchte ich es nicht treiben. Deswegen werde ich die JSON-Erweiterung installieren und bin dann hier fertig mit dem Manager. Dann brauche ich noch die entsprechende Datei an der Stelle, das heißt, ich muss hingehen, mir eine JSON-Datei erzeugen. JSON File. Der Name spielt letztendlich keine Rolle, ich halte mich aber an Gepflogenheiten, die sich verbreitet haben, "appsettings". Dann bin ich in dieser Datei und die Datei kann dann meine Konfigurationen aufnehmen, ich muss nicht alles in einer flachen Liste haben, ich könnte zum Beispiel hingehen und sagen, ich möchte so etwas wie "ConnectionsString" haben und da drunter möchte ich haben, geschweifte Klammer fehlt, darunter möchte ich haben zum Beispiel für eine AdoNetTestDb einen Connection String, und dem kann ich dann hier einen Wert geben an der Stelle. Damit könnte ich jetzt wieder zurück wechseln, mir den Connection String nehmen, wieder zurück in meine JSON-Datei und den entsprechend einfügen an der Stelle. Damit habe ich die Konfiguration erstmal in eine Datei ausgelagert. Jetzt muss ich die natürlich nur noch ansprechen können Dafür brauche ich ein bisschen Code. Für diesen Code mache ich eine eigene kleine Methode. Die nenne ich "setupConfig". Ich muss jetzt mit einigen Objekten arbeiten, zum Beispiel mit einem "IConfiguration", "IConfigurationBuilder". den ich dafür benötige. Wenn ich alles richtig gemacht habe, müsste ich den hier auch über Microsoft.Extensions.Configuration oben hinzufügen können. Das ist dann sowas wie ein ConfigBuilder. Da erzeuge ich mir eine neue Instanz und kann dann in einer Art "Fluent API" direkt zum Beispiel den Ordner angeben, wo ich die Konfiguration gedenke unterzubringen. Das sollte im gleichen Verzeichnis sein wie auch die "Binaries" selber. Ich kann hingehen und sagen "CurrentDirectory", auch das kann er ohne Weiteres nicht auflösen. "System.IO" ist da die richtige Angabe. Dann geht es noch ein Stückchen weiter. Ich muss ihm sagen, dass ich ein JSON File gerne verwenden würde. Dann braucht er den Namen des JSON Files. Damit habe ich meinen Teil an der Stelle soweit erfüllt, ich habe den "Connection String Builder" zusammengesetzt, der weiß jetzt, wo er die Dateien suchen soll, er weiß, dass er ein JSON File verwenden soll und eigentlich brauche ich dann nur noch eine Art Konfiguration, auf die ich dann in der Tat auch zugreifen kann. Da kann ich jetzt hier hingehen und sagen, ich möchte eine in dem ganzen Programm verfügbare statische Variable haben, und das wäre "IConfigurationRoot", das nenne ich einfach "config" und diesen Wert kann ich dann dem "ConfigBuilder", entlocken, indem ich die Build-Methode aufrufe. Was habe ich nochmal gemacht? Ich habe entsprechend zwei Pakete hinzugefügt für die Konfiguration als Erweiterung, als Extension, einmal den Kern und einmal den Zugriff auf JSON-Dateien. Ich habe die JSON-Datei selber hinzugefügt, ich habe der entsprechende Strukturen gegeben, dass ich unter "ConnectionsStrings" auf die einzelnen Elemente zugreifen kann, ich mache hier mal einen Plural draus, gefällt mir besser da kann ja noch mehr reinkommen und bin dann hingegangen und habe ein Stückchen Code geschrieben, und zwar eine Setup Methode, die über den "IConfigurationBuilder", beziehungsweise den "Configuration Builder" läuft, die entsprechend dem Basispfad und die Information, dass es sich um ein JSON File handelt, mitgegeben bekommt, dann rufe ich die Build-Methode auf, die liefert mir etwas zurück, was "IConfigurationRoot" implementiert, und das mache ich hier oben verfügbar. Als letzten Schritt, und dann sind wir auch soweit, können wir jetzt den "Connection String" nehmen nicht mehr, wie es hier steht, sondern entsprechend über "config". Dann kann ich darauf zugreifen, indem ich über den Indexer gehe und der Indexer muss jetzt einfach nur noch die Information bekommen, wo er in dieser JSON-Datei, also genauer gesagt, weiß ich an der Stelle von der JSON-Datei nichts mehr, aber wo in der Struktur der Konfiguration ich zu suchen habe. Das heißt, ich muss sagen "ConnectionStrings", das ist das, was wiederum dann doch im JSON-File steht und dann muss ich sagen, wie die Einstellung heißt an der Stelle, "AdoNetTestDb". Kurz abgleichen, damit das auch stimmt, sonst kriege ich gleich einen Fehler, AdoNetTestDb, ConnnectionStrings. Das kann ich dann auch einmal laufen lassen. Das teste ich soweit, ob es auch funktioniert, das war jetzt eine Menge und schon was vergessen, natürlich muss ich meine Methode da unten auch aufrufen, nicht nur programmieren, sondern auch aufrufen. Muss dem Code ja auch eine Chance geben, Fehler zu werfen. Ich kann jetzt hier einmal gucken, "Connection String" sieht schon mal soweit gut aus, vor allen Dingen keine "NullReferenceException" o. Ä. und wenn ich jetzt die Verbindung aufmache, dann sollte hier wieder "State Open" stehen. Dafür habe ich ein bisschen Ordnung geschaffen, auch wenn es ein etwas großer Anlauf war an der Stelle, aber ich denke, es ist ein wichtiges Element, dass ich "ConnnectionStrings" nicht einfach in meiner Anwendung stehen habe, auch wenn das schön einfach ist, sondern ich gehe hin und lade die aus dieser JSON-Datei und es macht mich so an der Stelle doch ein bisschen glücklich, dass ich das trennen kann an der Stelle.

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!