Implizites Lazy Loading vs Explicit Lazy Loading

8

Ich habe Entity Framework gelesen und die Leute haben geweint, warum es keine implizite Lazy Loading oder sowas gab. Im Grunde habe ich nach Dingen über Lazy Loading gesucht und jetzt weiß ich, was es ist: Es ist ein Entwurfsmuster, das uns erlaubt, Objekte zu laden, wenn sie wirklich benötigt werden.

Aber was ist der Unterschied zwischen Explizit Lazy Loading und Implizit Lazy Loading.

Vielen Dank im Voraus ...

    
Tarik 04.04.2010, 08:14
quelle

2 Antworten

5

Wenn Sie z.B. Wenn Sie eine Entität "OrderRow" und eine andere Entität "Order" haben, wird eine Navigationseigenschaft auf der OrderRow angezeigt, die auf die Order verweist, zu der sie gehört.

Gegenwärtig unterstützt das Entity Framework nur Explicit Lazy Load, was bedeutet, dass Sie, wenn Sie eine Anzahl von OrderRows abgerufen haben und etwas über den Auftrag prüfen möchten, Folgendes tun müssen:

%Vor%

Wenn Sie jedoch implizites Lazy Loading haben, brauchen Sie die IsLoaded-Prüfung nicht, sie wird automatisch ausgeführt, Sie können or.Order.Cancel() direkt ausführen und die Order 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 erstellt.

    
Anders Abel 04.04.2010, 08:22
quelle
4

Explicit bedeutet, dass Sie Ihren Code explizit zum Lazy Load geschrieben haben.

Implizit bedeutet, dass das Framework (in diesem Fall EF) sich selbst lazy lädt, unabhängig davon, ob Sie es beabsichtigen oder nicht.

    
Oded 04.04.2010 08:22
quelle