SPA mit ASP.NET Core und Angular

Model-Klassen für die Verwendung im Entity Framework anpassen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Mit dem Entity Framework können Sie eine eine Datenbank auf Basis ihrer Entitäten anlegen. Damit das Framework sinnvolle Datentypen in der Datenbank wählen kann, ist etwas Hilfe in Form von Data-Annotation-Attributen notwendig.
04:45

Transkript

Wenn Sie in Ihrer Anwendung das Entity Framework benutzen, dann können Sie es auch dazu verwenden, Ihre Datenbank automatisch anzulegen. Das heißt, dieses Framework nimmt dafür einige Annahmen an, und diese Annahmen, die trifft es auf Basis Ihrer Modellklassen. Was bedeutet das konkret? In meinem Fall habe ich zum Beispiel zwei DbSets, einmal Categories und einmal Dishes. Dishes ist vom Typ Dish, Categories vom Typ Category. Das Entitz Framework wird für mich also zwei Tabellen anlegen, einmal Dishes, einmal Categories. Die entsprechenden Felder, die werden anhand der öffentlichen Eigenschaften der Modellklassen ermittelt. Schauen wir einmal in die Klassen herein, indem ich mit F12 in die Klasse springe. In einem konkreten Fall würde Folgendes passieren. Laut Konvention wird ein Feld, dass Id heißt, oder genauso heißt wie die Entität, also Dish, und auf Id endet im konkreten Fall also Dish.Id. Das wird automatisch zum Primärschlüssel. Gebe ich nichts anderes an, dann wird im Fall von SQL Server ein Autowert auf diese Spalte gelegt, sprich das wird eine Identity Column. Außerdem werden wir eine nummerische Spalte halten, da wir hier ein Integer haben. Für den String schaut es so aus, dass wir hier eine Einschränkung in unserer Datenbank erhalten werden, nämlich dass Daten nur in die Tabelle eingetragen werden dürfen, wenn ich auch einen Namen übergebe. Der Feld-Typ wird für dieses Feld Varchar sein. Das ist genau das, was wir auch erreichen wollen. Das Problem an der Stelle ist, dass ich keine Längenbeschränkung angegeben habe. Bedeutet, das Feld wird vom Typ ein Varchar Max sein. Und das hat zur Auswirkung, dass Sie dort viele 100 Megabyte bis in den Gigabyte Bereichern Daten hereintragen können, was für einen Namen sicherlich viel zu lang wäre, für eine Speise, denn das wäre dann so lang wie ein ganzes Buch, aber nicht so lang wie eine Speise auf der Speisekarte. Darüber hinaus hat es aber auch das Problem, dass wir diese Spalte nicht indizieren können. Deswegen werde ich am Ende die Framework jetzt hier helfen und über das Attribut MaxLength angeben, dass Inhalte dieser Spalte nicht länger als 100 Zeichen sein dürfen. Das führt dann dazu, dass wir bei der Generierung später ein Varchar 100 bekommen. Ähnlich gehe ich mit der Spalte Description vor, weil der Description, der macht in meinem Fall eine Beschreibung, maximal bis 250 Zeichen sind. Also werde ich auch hier das MaxLength-Attribut benutzen und übergebe 250. Wenn Sie Ihre eigene Anwendung schreiben, dann müssen Sie sich natürlich überlegen, welche Maximalwerte für eine Spalte Sinn machen. Wichtig ist nur, dass Sie diese explizit angeben. Wenn Sie das veregessen, dann bekommen Sie als Datentyp ein Varchar Max, was dazu führt, dass Ihre Anwendung nicht sonderlich performant laufen wird. Für die Entität Dish bin ich soweit fertig. Die nummerischen Spalten hier unten, die muss ich nicht großartig weiter bedenken, sondern die Framework erkennt hier übrigens, dass ich hier eine Navigationseigenschaft habe. Vom Typ Category es gibt ein Feld CategoryId. Das wird dann einfach in der Datenbank später ein Fremdschlüssel auf diese Kategorie-Tabelle werden. Die Kategorie-Tabelle selber, die wird angelegt über den DbSet Categories. Schauen wir auch mal in diesen herein. Und hier haben wir auch wieder zwei string-Spalten, die beide aktuell keine beschränkte Länge haben. Das sollten wir kurz korrigieren. Außerdem gibt es auch bei einer Kategorie ein Name zwingend, erforderlich, also benutze ich das Required-Attribut. Und dieses Attribut, das befindet sich im Namensraum System.ComponentModel.DataAnnotations, genauso wie das Attribut MaxLength, und auch hier jeweil wie einmal 100 bei der Beschreibung nehmen wir eine Maximallänge von 250. Diese Attribute, die wir hier angeben, die können übrigens nicht nur vom Entity Framework genutzt werden, sondern die werden auch genutzt, wenn wir das als äußere Schnittstelle an unseren Controllern übergeben. Heißt konkret, ich poste zum Beispiel oder über ein Update gebe ich eine Kategorie an einem Controller und dann würde bei diesem Update der Modelsdate zum Beispiel die Eigenschaft ist ... auf false stehen haben, wenn ich zum Beispiel einen String hier übergebe, der länger als 250 Zeichen ist. Ansonsten ist es wichtig, dass Sie Ihre Maximallängen angeben, damit Sie eben eine vernünftige Datenbank von Entity Framework generiert bekommen.

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!