related query objects not method lazy framework c# entity-framework lazy-loading poco

c# - query - Entity Framework Eager Load Not Returning Data, Lazy Load Does



entity framework sql query (3)

Estoy usando el código primero EF5 y tengo un objeto que tiene una colección definida como virtual (carga lenta). Esto devuelve datos cuando se llama. Sin embargo, quiero que esté ansiosamente cargada. Eliminé virtual de la firma de la propiedad pero ahora siempre devuelve datos null . EF ni siquiera ejecuta la consulta , ¿alguien puede ayudar?

Editar: Sé acerca de .include() Prefiero usar el método de propiedad no virtual de hacerlo.

Objetos

User ( [Key] Id está en el objeto Resource que es la clase Parent de la persona):

namespace Entities { [Table("Users")] public class User : Person { [Required] public ICollection<Role> Roles { get; set; } } }

Papel:

namespace Entities { public class Role { [Key] public string Id { get; set; } public virtual ICollection<User> Users { get; set; } } }



Solo una cosa mencionar aquí.

Si desactivo LazyLoading de EF con

this.DbContext.Configuration.LazyLoadingEnabled = false;

luego, el método "incluir" no cargará entidades secundarias para cargar con entusiasmo.

entonces, si quiero usar "incluir" en la consulta, necesito activar la propiedad LazyLoading de EF al mismo tiempo.


Esta es una confusión común. Lo opuesto a la carga diferida es: sin carga, a menos que usted mismo realice la carga de manera explícita (p. Ej., Cargando Include usando Include ).

Por lo tanto, si desactivas la carga diferida de cualquier forma (quitar el modificador virtual es una de ellas), el comportamiento no se convierte en carga ansiosa sino en carga .

Piénselo, supongamos que EF cargaría ansiosamente todo lo que no está marcado para la carga diferida. ¡Usted corre el riesgo de cargar la mitad de la base de datos haciendo una simple consulta!

No hay forma de hacer que una propiedad de navegación esté ansiosa por cargarse de manera predeterminada (si aún desea eso después de leer lo anterior).