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

Entity Framework Core Grundkurs

Abhängige Entitäten laden

Testen Sie unsere 2015 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Ob Lazy Loading – das Laden abhängiger Daten bei Bedarf – nun Fluch oder Segen ist, darüber herrscht Uneinigkeit. Eines ist jedoch sicher: In der Version 1.0 des Entity Framework Core wird Lazy Loading nicht unterstützt. Wie Sie trotzdem an Ihre Daten kommen, verrät dieses Video.
03:34

Transkript

In meinem Domain-Modell hat die Klasse "Fahrzeug" eine Auflistung von Fahrten. Bedeutet also, ich kann zu jedem Fahrzeug alle Fahrten laden. Wenn ich das Ganze nun in meinem Programm implementieren möchte, dann war der Ansatz, wie ich ihn zu Entity Framework 6-Zeiten wählen konnte, dass ich zunächst die Haupt-Entität geladen habe, also das Fahrzeug und anschließend auf die Auflistungseigenschaft, in meinem Fall also auf die Fahrten zugegriffen habe, und darüber iteriert habe. In einem Fall wie diesen wurde Lazy Loading genutzt. Bedeutet also, dass das Fahrzeug geladen worden ist und beim Zugriff auf die Eigenschaft "Fahrten" erkannte das Entity Framework, dass diese Eigenschaft doch nicht initialisiert war und hat dann bei Bedarf die Fahrten nachgeladen. Heißt also, beim Ausführen hätte ich beim Entity Framework 6 das Fahrzeug, plus alle Fahrten erhalten. Wie Sie jetzt sehen, erhalte ich nur noch das Fahrzeug. Und könnte es daran liegen, dass ich meine Eigenschaft "Fahrten" nicht als virtuell deklariert habe. Dies war eine der Voraussetzungen beim Entity Framework 6, damit das Lazy Loading funktioniert, dass solche Eigenschaften als virtual deklariert werden mussten. Wenn ich mein Programm nun starte, dann sehen wir allerdings, dass auch jetzt die Fahrten immer noch fehlen. Und das liegt einfach daran, dass das Entity Framework Core in der Version 1.0 kein Lazy Loading unterstützt. Das bedeutet also, wenn ich abhängige Daten laden möchte, dann muss ich dies dem Entity Framework vorher mitteilen, und zwar mit der "Include"-Methode. Das Ganze funktioniert wie folgt. Hier, wo ich auf meinen DbSet zugreife, werde ich nun, bevor ich die Methode "First" aufrufe, um das erste Fahrzeug zu laden, die Methode "Include" aufrufen. Dann sehen Sie, die IntelliSense sagt: es gibt ja kein "Include" und auch Visual Studio beschwert sich durch ein Unterkringeln. Und das liegt daran, dass "Include" eine Erweiterungsmethode ist, die im Namensraum Microsoft Entity Framework Core implementiert wurde, den ich schlichtweg noch nicht importiert habe. Über Strg + Punkt öffne ich aber hier das Kontext-Menü. Und Visual Studio schlägt mir schon vor diesen Namensraum zu importieren. Das bestätige ich mit Enter. Und jetzt kann ich "Include" aufrufen. Muss allerdings noch sagen was überhaupt inkludiert werden soll. Das Ganze geschieht über einen Lambda-Ausdruck. Und hier gebe ich an, dass die Fahrten miteinbezogen werden sollen. Wenn ich mein Programm nun starte, dann werden Sie sehen, dass dieses Mal auch die Fahrten geladen worden sind und dass wir zwei Select Statements hatten. Eines, was das erste Fahrzeug selektiert. Und ein zweites, was die Details der Fahrten zum ersten Fahrzeug selektiert. Wichtig an dieser Stelle ist, wie gesagt, noch einmal sich vor Augen zu führen, dass das Entity Framework Core in der Version 1.0 kein Lazy Loading implementiert. Heißt also, Daten werden nicht automatisch nachgeladen. Und je nachdem was für eine Art von Anwendung Sie schreiben, ist es für Sie eher gut oder eher schlecht. Für viele Anwendungen war es sehr praktisch Lazy Loading zu haben, weil Daten gerade in interaktiven GUI-Anwendungen erst bei Bedarf geladen werden mussten. Auf der anderen Seite war es in Web-Anwendungen häufig problematisch und man hat es sowieso deaktiviert. Der Weg funktioniert nun auf jeden Fall anders. Sie haben kein Lazy Loading mehr, sondern müssen alle abhängige Daten ganz explizit mitladen.

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!