Das verzögerte Laden in Entity Framework ist das Standardphänomen, das beim Laden und Zugreifen auf die zugehörigen Entitäten auftritt. Begieriges Laden bezieht sich jedoch auf die Praxis, alle diese Beziehungen zu erzwingen. Ich bin auf die Frage gestoßen, unter welcher Situation eifriges Laden nützlicher sein könnte als faules Laden. Da es offensichtlich ist, dass das faule Laden ressourcenschonender ist, und selbst wenn wir die ToList()
-Methode verwenden, können wir immer noch das lazy loading-Verhalten ausnutzen. Ich dachte jedoch, dass das Lazy Loading die Anzahl der Anfragen an die tatsächliche Datenbank erhöht und vielleicht benutzen deshalb Entwickler manchmal die Methode Inlcude
, um alle Beziehungen zwangsweise zu laden. Wenn Sie beispielsweise das Visual Studio-Auto-Scaffolding in MVC 5 verwenden, verwendet die Indexmethode, die automatisch im Controller erstellt wird, immer Eager Loading, und ich hatte immer die Frage, warum Microsoft in diesem Fall standardmäßig Eager Loading verwendet.Lazy Loading vs Eager Loading
Ich würde mich freuen, wenn mir jemand erklärt, unter welcher Situation eifriges Laden nützlicher wäre als faules Laden, und warum wir es überhaupt benutzen, während es etwas mehr Ressourcenfreundliches wie Lazy Loading gibt.
Stellen Sie sich eine Situation vor, in der Ihr Db-Kontext entsorgt würde und das Lazy Loading nicht mehr stattfinden könnte. Dann ist eifriges Laden von Vorteil. – Transcendent
Ich habe gesehen, dass viele Projekte aufgrund von Leistungsproblemen aufgrund des "N + 1 Select" -Problems scheitern, was beim lazy loading schneller auftreten wird, also sieh dir das an –