lazyloadingenabled lazy framework disable c# entity-framework lazy-loading

c# - lazy - Entity Framework: ¿Cómo deshabilitar la carga diferida para consultas específicas?



lazy loading virtual (4)

¿Hay alguna forma de desactivar la carga diferida para consultas específicas en Entity Framework 6? Quiero usarlo regularmente, pero a veces quiero desactivarlo. Estoy usando propiedades virtuales para cargarlas perezamente.


Puede desactivar la carga lenta para consultas específicas de la siguiente manera:

public static Cursos GetDatosCursoById(int cursoId) { using (var bd = new AcademyEntities()) { try { bd.Configuration.ProxyCreationEnabled = false; return bd.Cursos.FirstOrDefault(c => c.cursoId == cursoId); } catch (Exception ex) { return null; } } }


Puede que me falta algo aquí, pero en lugar de cambiar la configuración cada vez, ¿podría otro enfoque utilizar .Include() solo en aquellas consultas en las que desea una carga ansiosa?

Supongamos que tenemos una clase de Product que tiene una propiedad de navegación para una clase de Colour , puede cargar el Colour de un Product como este:

var product = _context.Products .Where(p => p.Name == "Thingy") .Include(x => x.Colours) .ToList();


Vaya a las propiedades del diagrama y encuentre una propiedad designada para la carga diferida y desactívela.

Si está utilizando primero el código, vaya a su área de configuración y deshabilítelo desde allí con:

this.Configuration.LazyLoadingEnabled = false;


establece el siguiente código antes de la consulta que deseas ejecutar

context.Configuration.LazyLoadingEnabled = false;