Wenn Sie z.B. Wenn Sie eine Entität "OrderRow" und eine andere Entität "Order" haben, wird auf der OrderRow eine Navigationseigenschaft angezeigt, die auf die Bestellung verweist, zu der sie gehört.
Derzeit Entity Framework unterstützt nur Explicit Lazy Load was bedeutet, dass, wenn Sie eine Reihe von OrderRows retreived haben und wollen etwas über die Bestellung zu überprüfen, müssen Sie:
// or is an OrderRow
if(!or.Order.IsLoaded)
or.Order.Load()
or.Order.Cancel();
Allerdings, wenn Sie implizite haben Lazy Loading Sie brauchen nicht die IsLoaded Prüfung, es wird automatisch erledigt, Sie können or.Order.Cancel()
direkt tun und die Bestellung wird bei Bedarf automatisch geladen. So funktioniert linq-to-sql und es spart Tipping und ein gewisses Risiko für Fehler. Auf der anderen Seite wird weniger klar, wann und wie der Datenbankzugriff durchgeführt wird. Mit implizitem Laden ist es einfach, ineffizienten Code zu schreiben, der für jede Zeile, die aus einer Tabelle abgerufen werden soll, einen DB-Roundtrip macht.
Sie meinen also explizit Lazy Loading ist für verwandte Tabellen erforderlich? – Tarik
Nein, Implizites Laden bedeutet, dass die zugehörigen Tabellen automatisch im Hintergrund geladen werden. –
.. mehr wie im Vordergrund. Die Ausführung wird blockiert, bis sie abgerufen wird. –