Il caricamento lento in Entity Framework è il fenomeno predefinito che si verifica per il caricamento e l'accesso alle entità correlate. Tuttavia, il carico impaziente è riferito alla pratica del caricamento forzato di tutte queste relazioni. Mi sono imbattuto nella domanda su quale situazione il carico impaziente potrebbe essere più vantaggioso del carico pigro. Chiedendo questo, perché è ovvio che il caricamento lazy è più favorevole alle risorse, e anche se utilizziamo il metodo ToList()
, possiamo ancora approfittare del comportamento di caricamento lento. Tuttavia, ho pensato che forse il caricamento pigro aumentasse il numero di richieste al database reale e forse questo è il motivo per cui a volte gli sviluppatori usano il metodo Inlcude
per forzare il caricamento di tutte le relazioni. Ad esempio, quando si utilizza lo scaffolding automatico di Visual Studio in MVC 5, il metodo Index creato automaticamente nel controller utilizza sempre Eager Loading e ho sempre avuto la domanda sul motivo per cui Microsoft utilizza Eager Loading per impostazione predefinita in quel caso.Lazy Loading vs Eager Loading
Sarei grato se qualcuno mi spiegasse in quale situazione il caricamento ansioso sarebbe più vantaggioso del caricamento pigro, e perché lo usiamo mentre c'è qualcosa di più facile da usare come Lazy Loading.
Immagina una situazione in cui il tuo contesto db sarebbe stato smaltito e il caricamento lento non poteva più avvenire. Quindi il carico impaziente è vantaggioso. – Transcendent
Ho visto un sacco di progetti falliti a causa di problemi di prestazioni dovuti al problema "N + 1 Select" che si verifica più velocemente quando si esegue il caricamento lento, quindi assicuratevi di vederlo su –