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

Entity Framework Core Grundkurs

Feldlängen beschränken

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Eigenschaften des Typs String werden in der Datenbank zu einem nvarchar(max)-Feld. Dies ist in der Regel nicht gewünscht. Dieses Problem lösen Sie über das StringLength-Attribut.
04:28

Transkript

In den Klassen meines Domain-Modells, aus dem ich mir über Entity Framework Migrations eine Datenbank erstellt habe lassen, sehe ich einige String Felder. Zum Beispiel hier das "Fahrtziel" oder den "Zweck". Wenn ich nun in die Datenbank Entwurfsansicht wechsle, dann sehe ich, dass diese Felder vom Typ nvarchar(MAX) sind. Was bedeutet das? Ich wechsle einmal kurz in die MSDN-Dokumentation. Und innerhalb der Dokumentation werden wir jetzt sehen, dass Felder von der Größe nvarchar(MAX) 2 Gigabyte an Inhalten aufnehmen können. Das bedeutet also, ich könnte hier einen Fahrernamen oder ein Fahrziel eintragen, das 2 Gigabyte an Daten groß ist. Im Endeffekt könnte ich also mehrere komplette Bücher einfügen. Das ist aus zwei Gründen problematisch. Zum einen, ich werde hier sicherlich irgendwann zu einem Punkt kommen, wo in einer echten Anwendung ein Anwender versehentlich etwas zu großes in dieses Feld hereinschreibt. Und das könnte dazu führen, dass meine Anwendung später nicht mehr vernünftig funktioniert. Ein weiteres Problem ist, dass nvarchar(MAX) Felder nicht initiiert werden können, sondern lediglich durch ein Volltextindex. Das hat aber zur Folge, dass ich auf solchen Feldern keine vernünftigen Suchen über eine "Where"-Einschränkung ausführen kann. Wie lösen wir das Problem? Glücklicherweise ist es relativ simple. Alles was ich machen muss, ist: ich muss das StringLength Attribut über die entsprechenden Felder setzen. Und hier kann ich jetzt eine maximale Länge eingeben. Für das Fahrtziel sage ich also zum Beispiel, dass 512 Zeichen ausreichend sind. Ich kopiere mir das Ganze. Und für den Zweck nehme ich einmal die gleiche Größe. Und für den Namen des Fahrers, da reichen vielleicht schon 250 Zeichen. Das Gleiche wiederhole ich jetzt für die anderen Felder meines Modells. Also, für den Fahrer zum Beispiel. Hier sage ich, dass der Vorname eine maximale Länge von 150 Zeichen hat. Das Gleiche gilt für den Nachnamen, für die Straße. Die Postleitzahl, die können wir natürlich noch kleiner machen. Die können wir zum Beispiel auf 7 Zeichen begrenzen. Warum 7 Zeichen? Na ja, es könnte sein, dass jemand zu den 5 Zeichen der Postleitzahl außerdem noch das Länderkürzel, also DE- und dann die Postleitzahl eintragen möchte. Und den Ort lassen wir wieder 150 Zeichen groß sein. Nun möchte ich noch das Fahrzeug entsprechend editieren. Hier habe ich das Kennzeichen, da reichen 15 Zeichen für aus. Und ich habe den Typen. Und beim Typen gebe ich auch wieder 150 Zeichen an. Welche Länge die Strings in Ihrem konkreten Fall haben sollen? Das hängt natürlich von Ihren Daten ab. Das müssen Sie also selber herausfinden. Wenn ich jetzt das Ganze einmal gespeichert und übersetzt habe, um zu sehen, ob es noch funktioniert, dann kann ich jetzt eine weitere Migration hinzufügen. Nämlich die Migration mit dem Namen "FeldlaengeDefiniert". Ich bekomme hier eine Fehlermeldung, dass diese Migration dazu führen könnte, dass wir Daten verlieren. Denn schließlich wird die Länge von Feldern hier begrenzt. In meinem Fall ist es kein Problem, denn ich habe keine Daten in meiner Datenbank aktuell drin. Wenn Sie so eine Migration ausführen und schon Daten in Ihrer Datenbank drin haben, dann müssen Sie natürlich sicherstellen, dass Sie keine Daten haben, die einfach zu lang sind für diese Änderung. Da über stellende Migration kann ich jetzt meine Datenbank aktualisieren über Update-Database. Und wenn ich jetzt mir den Entwurf der Tabelle "Fahrten" erneut ansehe, indem ich das Ganze schließe und dann im Kontext-Menü der Datenverbindung, beziehungsweise der Tabelle "Fahrten" auf "Tabellendefinition öffnen" klicke, dann sehe ich, dass hier meine Textfelder jetzt eine entsprechende Längenbeschränkung haben. Und das ist auch wichtig, denn wie gesagt, ohne diese Längenbeschränkung könnte ich zum einen in den Fall kommen, dass ich zu viele Daten in meiner Tabelle habe. Zum anderen kann ich mein Feld aber auch nicht initiieren, was es schwer beziehungsweise inperformant macht danach zu suchen.

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!