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.

SPA mit ASP.NET Core und Angular

DbContext anlegen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
ASP.NET Core erlaubt die Nutzung des Entity Framework Core für den komfortablen Datenzugriff. Als Schnittstelle für den Datenzugriff dient der DbContext, den wir in diesem Film anlegen werden.
10:23

Transkript

In meiner Anwendung habe ich einen Controller, der Speisen zurückgeben kann, verändern und löschen. Außerdem können wir über diesen Controller auch neue Speisen anlegen. Diese Speisen, die kommen aus der Datei dishes.json, die wir hier sehen, und für den Zugriff habe ich ein Repository geschrieben, was auf diese Datei zugreift. Ich würde die Datenquelle jetzt gerne von einer Datei in eine Datenbank verlagern. Zum Datenbankzugriff in einer ASP.NET Core Anwendung, bietet sich die Nutzung des Entity Framework Core an. Dieses können wir installieren, indem wir das Kontextmenü des Projektes öffnen und dann den Menüpunkt NuGet-Pakete verwalten auswählen. Das Paket, nach dem ich jetzt suche, das nennt sich Microsoft.EntityFrameworkCore und dann .SqlServer, da ich ganz gerne auf einen SQL Server zugreifen möchte. Ich wähle hier das obere der beiden Pakete, nicht das Design-Paket, sondern nur das SqlServer-Paket und dieses Paket, das hat eine Abhängigkeit an das EntityFrameworkCore-Paket, wird jetzt also eine Reihe von Paketen nachinstallieren. Wenn ich hier Installieren auswähle, muss ich nun zunächst einmal bestätigen, was all das für mich jetzt mitinstalliert wird, wir sehen also, dass durch das EntityFrameworkCore.SqlServer, auch Core.Relational installiert wird und EntityFrameworkCore, außerdem ein paar Linq-Bibliotheken und der SqlServerClient. So, die Lizenzbedingungen muss ich noch akzeptieren und dann werden für mich alle notwendigen Bibliotheken installiert. Mit dem Installieren der Bibliotheken ist es natürlich noch nicht getan, sondern ich brauche eine Klasse, die mir den Zugriff über das Entity Framework, auf die Datenbank ermöglicht. Eine solche Klasse, das ist der sogenannte Datenbank-Context. Diesen kann ich erstellen, indem ich eine neue Klasse im Ordner Models anlege, ich nutze hier eine ganz normale Klasse und diese Klasse, die nenne ich jetzt VegiContext, denn bei uns geht es schließlich um vegetarische Gerichte. Diese Klasse, die lasse ich jetzt erben von der Basisklasse DbContext, und DbContext, das finden wir im Namespace Microsoft.EntityFrameworkCore, den wir importieren müssen. Die Grundidee bei so einem Context ist jetzt, dass ich für jede Entität, die ich verwalten möchte einen sogenannten DbSet anlege. Das ist einfach eine öffentliche Eigenschaft, und zwar vom Typ DbSet typisiert anhand des Entitätstyps, den ich verwalten möchte zum Beispiel Dish, und das Ganze nenne ich Dishes und definiere noch einen Getter und einen Setter. Abgesehen von Speisen habe ich auch Kategorien von Speisen, wie zum Beispiel Suppen, kleine Portionen, Hauptgerichte und so weiter. Auch für diese Kategorien möchte ich ein DbSet anlegen, also benötige ich hier noch eine weitere Eigenschaft vom Typ DbSet, dieses Mal für die Kategorien, diese nenne ich Categories und auch hier benötige ich wieder einen Getter und einen Setter. Was wir jetzt auch noch benötigen, ist einen Context, und zwar ein Context, an den wir Optionen von außen übergeben können. Solche Optionen können zum Beispiel sein, welche Datenbank ich nutzen möchte, denn aktuell habe ich noch keine Aussage darüber getroffen, welches Datenbanksystem ich tatsächlich nutzen werde und natürlich kann ich auch die Verbindungszeichenfolge zu meiner Datenbank übergeben. Der Konstruktor, der wird wie folgt angelegt: Ich nutze hier das Konstruktor beziehungsweise ctor Snippet und übergeben an meinem Konstruktor, muss ich jetzt DbContextOptions, und zwar DbContextOptions vom Typ VegiContext, also von meinem eigenen Context. Den Parameter nenne ich jetzt options und den schleife ich gleich durch beim Aufruf des Basiskonstruktors. So, wenn ich das jetzt hier an der Stelle erledigt habe, dann habe ich jetzt meinen Context angelegt, jetzt muss ich die Nutzung des Contexts noch entsprechend konfigurieren. Und dazu wechsle ich in meine Datei appsettings.json, und werde hier erst einmal eine Verbindungszeichenfolge, also einen Connection String anlege. Dazu werde ich auf der obersten Ebene, auf der sich auch Logging befindet, einen neuen Schlüssel einfügen, nämlich ConnectionStrings heißt dieser Schlüssel und das ist ein Objekt, was da drunter hängt, so, und dieses Objekt, das hat jetzt einfach, wie jeden Connection String, den ich gerne definieren möchte, eine Eigenschaft. In meinem Fall habe ich nur einen Connection String erstmal, den nenne ich DefaultConnection, und die Verbindungszeichenfolge, die lautet wie folgt: Als Server benutze ich die localdb, und zwar geht es dann hier weiter mit (localdb)\\mssqllocaldb. Die Datenbank, die soll heißen ElVegetarianoFurio. Wir möchten ganz gerne integrierte Windows Ordner Identifizierung nutzen, also stelle ich Trusted_Connection=True und MultipleActiveResultSets setze ich auch auf =True. So. Damit habe ich die Verbindungszeichenfolge an der Stelle erst einmal abgelegt. Von der Grundidee her schaut das also wie folgt aus: Ich habe eine Eigenschaft ConnectionStrings angelegt, da drunter eine Eigenschaft DefaulfConnection und hier habe ich mich für die localdb als Datenquelle entschieden. Ich habe hier zwei Backslashes, weil der erste den zweiten Backslash maskiert. Die localdb, falls Sie damit noch nicht gearbeitet haben, das ist übrigens eine Entwicklungsversion des SQL Servers, bedeutet, das ist also eine Datenbank, die wird im gleichen Prozessraum gestartet wie Ihre Anwendung, das ist also kein eigener Dienst, sowie die SQL Express Version oder die volle SQL Server Version. So, was wir jetzt darüber hinaus noch erledigen müssen, ist, wir müssen eine Verbindung zwischen DbContext und diesem ConnectionString herstellen. Und das machen wir am einfachsten in unserer Startup Klasse. Hier haben wir ja bereits die Methode ConfigureServices, und innerhalb der Methode ConfigureServices haben wir bereits das MVC Framework hinzugefügt und jetzt werden wir hier auch noch einen DbContext hinzufügen. Dazu füge ich hier eine neue Zeile an und sage services.AddDbContext, und zwar ein DbContext vom Typ VegiContext. So, jetzt muss ich über Steuerung+Punkt noch den Namensraum importieren, und an diesen Context wollen wir Optionen übergeben. Ich sage also hier options=options.UseSqlServer, bedeutet also wir wollen hier den SQL Server gerne benutzen, und wir übergeben, dass wir den ConnectionString aus unserer Konfigurationsdatei verwenden möchten, also Configuration.GetConnectionString mit dem Namen DefaultConnection. So, hier hinten muss ich noch ein Semikolon eintragen. Und die Methode UseSqlService, eine Erweiterungsmethode, da scheint mir aktuell ein Import zu fehlen, und zwar ist das ein Import auf Microsoft.EntityFrameworkCore. Und damit ist es auch hier diese Fehlermeldung an der Stelle weg, dann kann ich also hier an die Optionen UseSqlServer übergeben. Die Schritte um das Entity Framework einzubinden, waren also wie folgt: Schritt Nummer 1 war, ich habe das NuGet-Paket Microsoft.EntityFrameworkCore.SqlServer referenziert. Schritt Nummer 2, ich habe eine Klasse, die von DbContext erbt, angelegt, diese Klasse hat für jede Entität, die später über den Context verwaltet werden soll, eine Eigenschaft vom Typ DbSet definiert, außerdem habe ich einen Konstruktor angelegt und an diesen Konstruktor übergebe ich DbContextOptionen vom Typ VegiContext. Diese Optionen, die reiche ich dann durch an dem Basiskonstruktor, und die benötige ich, um die Verbindungszeichenfolge und den Datenbanktyp definieren zu können. Die Verbindungszeichenfolge, die habe ich in der Datei appsettings.json hinterlegt, das war also hier dieser Eintrag, ConnectionStrings mit der DefaultConnection, außerdem musste ich in der Datei Startup.cs unter ConfigureServices noch den Service für den DbContext anlegen. Dazu habe ich einfach hier services.AddDbContext vom Typ VegiContext aufgerufen, habe als Optionen übergeben, dass ich gerne den SQL Server benutzen möchte und habe hier die entsprechende Verbindungszeichenfolge geladen. Damit diese Methode UseSqlServer auch erkannt wurde, war es erforderlich, dass ich den Namensraum Microsoft.EntityFrameworkCore importiert habe.

SPA mit ASP.NET Core und Angular

Lernen Sie die Bestandteile von modernen Webanwendungen kennen und nutzen.

5 Std. 21 min (36 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Hersteller:
Exklusiv für Abo-Kunden
Erscheinungsdatum:25.09.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!