4 Stimmen

Was ist der Unterschied zwischen Lazy Loading und Load()

Was ist in Entity Framework 4 der Unterschied zwischen Lazy Loading und der Verwendung der Load()-Methode?

Bearbeiten: Ich habe zwei 'if'-Anweisungen hinzugefügt:

Fließendes Laden:

var query = from c in context.Contacts select c;
foreach ( var contact in query ) {
     if ( contact.ID == 5 )
        Console.WriteLine( contact.Addresses.City );
}

Load()-Methode:

context.ContextOptions.LazyLoadingEnabled = false;

var query = from c in context.Contacts select c;
foreach ( var contact in query ) {
     if ( contact.ID == 5 ) {
        contact.Addresses.Load()
        Console.WriteLine( contact.Addresses.City );
     }
}

Warum sollte ich bei diesen beiden "Wenn"-Prüfungen die eine der anderen vorziehen?

2voto

Oskar Kjellin Punkte 20322

Lazy Loading bedeutet, dass das Objekt nur dann geladen wird, wenn es benötigt wird, so dass keine unnötigen Daten geladen werden.

Wenn Sie deaktivieren Lazy Loading Sie sagen, dass Sie sich selbst laden werden, indem Sie load aufrufen.

http://en.wikipedia.org/wiki/Lazy_loading

Lazy Loading ist standardmäßig deaktiviert. Wenn Sie es also auf false in Ihrer ersten Zeile bewirkt gar nichts.

Wenn Sie anrufen Load laden Sie alle zugehörigen Objekte in diese Datenbank (was in diesem Fall nicht erforderlich ist, so dass es auch ohne diese Funktion funktioniert)

0voto

ssmith Punkte 6630

Dieser Beitrag zu Arbeiten mit Lazy Loading in EF 4 Code First sollte auch helfen zu verstehen, wie sich Entity Framework mit und ohne aktiviertem Lazy Loading verhält. Es wird auch gezeigt, dass es in EF4 standardmäßig aktiviert ist und wie man es pro Instanz oder standardmäßig für die eigene Anwendung deaktivieren kann.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X