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

Entity Framework Core Grundkurs

Tracking und NoTracking

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Vollständig geladene Entitäten werden durch den Entity Framework Change Tracker auf Änderungen hin überwacht. Für den Fall, dass dies nicht gewünscht ist, kann eine Deaktivierung über die Methode AsNoTracking erfolgen.
03:16

Transkript

Wenn wir Daten über das Entity Framework laden, so wie in diesem Fall hier, wo ich die ersten zehn Fahrten lade, und an diesen geladenen Daten anschließend Eigenschaften ändern, dann wird der Change Tracker des Entity Frameworks dieses automatisch merken und beim Aufruf von SaveChanges alle Datenänderungen speichern. Dieses Verhalten nennt sich Change Tracking. Gucken wir uns das einmal in Aktion an. Ich habe also die zehn Datensätze geladen und bin dann in einer Schleife, wie wir hier sehen, über die Daten iteriert, und habe die Uhrzeit geändert. Und wir können jetzt hier sehen, dass zehnmal ein Update Statement ausgeführt worden ist. Jedes mal wird also gesagt: UPDATE [Fahrten] SET [UhrzeitBis] = und dann einen bestimmten Wert mit der Einschränkung auf die Id. Und als Summe erhalte ich die Rückmeldung, dass zehn Datensätze geändert worden sind. Im unteren Beispiel, was wir hier sehen, habe ich eine Projektion genutzt. Bedeutet also, ich habe nur die Eigenschaften "Id", "UhrzeitVon" und "UhrzeitBis" selektiert, weil das die einzigen sind, die ich benötige. Wenn ich nun versuche diese Entität zu ändern, dann werde ich eine Fehlermeldung bekommen. Das liegt daran, dass ich hier einen anonymen Typ erzeugt habe und die Eigenschaften anonymer Typen sind Read Only. Bedeutet also, sobald ich einen anonymen Typen habe, der keine Entität repräsentiert, kann dieser nicht geändert werden und somit wird auch nicht durch den Change Tracker überwacht. Das ist an sich eine gute Sache, wenn Sie Daten haben, die Sie nur lesen möchten. Denn diese Überwachung durch den Change Tracker kostet zusätzliche Performance. In dem Moment, wo Sie also Daten tatsächlich nur ausgeben möchten, können Sie über eine Projektion ein anonymes Objekt nutzen und dadurch wird Ihr Code entsprechend schneller ausgeführt. Wenn Sie allerdings komplette Entitäten benötigen und lediglich das Change Tracking deaktivieren möchten, dann können Sie die Erweiterungsmethode "AsNoTracking" nutzen. Diese führt nun dazu, dass der Change Tracker diese Fahrten hier oben, die eben noch durch den Change Tracker überwacht worden sind, jetzt nicht mehr überwachen wird. Als Ergebnis werden wir also gleich sehen, dass wir die Meldung bekommen, dass null Datensätze geändert worden sind. Wir können also zusammenfassen. Wenn Sie Daten mit dem Entity Framework laden und diese in eine vollständige Entität zurückschreiben, so wie in meinem Fall hier, dann werden diese Entitäten durch den Change Tracker überwacht und Änderungen werden automatisch gespeichert, sobald Sie "SaveChanges" aufrufen. Das ist immer dann hilfreich, wenn Sie diese Daten laden, um sie zu editieren. Wenn Sie die Daten allerdings nur laden, um sie zu visualisieren, dann kostet dies zusätzliche Performance. Sie können das lösen, indem Sie mit anonymen Objekten arbeiten, so wie hier, und einer Projektion, oder aber falls Sie die vollständige Entität benötigen, dann nutzen Sie die Erweiterungsmethode "AsNoTracking".

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!