entity framework - framework - ¿Puedo cargar una propiedad de navegación de forma perezosa al delegar en un procedimiento almacenado en EF?
agregar procedimiento almacenado entity framework (1)
No, no puedes. La carga diferida se codifica en el objeto proxy creado por EF (si es posible), no hay forma de interceptar / configurar la manera en que se generan los proxies.
Ni siquiera es posible asignar la acción de lectura predeterminada de un DbSet
a un procedimiento almacenado. Siempre es una consulta. Solo crear, actualizar y eliminar se puede asignar a procedimientos almacenados .
La razón (creo) es que los procedimientos almacenados no se pueden componer, por lo que si en una consulta LINQ compleja una entidad se mapeara a un procedimiento almacenado (para la lectura) no sería posible convertir la consulta en una sola instrucción SQL.
Tengo la siguiente clase de cliente:
public class Customer
{
public long Id { get; set; }
public virtual ICollection<Order> Orders { get; set; }
}
Mi base de datos tiene tablas de clientes y pedidos, pero no relaciones de claves externas. Los pedidos de un cliente se obtienen utilizando un procedimiento almacenado que toma la ID del cliente y devuelve las filas de la orden. No puedo modificar la base de datos.
Sé cómo llamar al procedimiento almacenado desde Entity Framework, pero, ¿es posible configurar el DbContext con la API fluida para que el acceso a la colección Orders de un objeto del cliente cargue las entidades de forma perezosa mediante una llamada al procedimiento almacenado?
Estoy usando la última versión de EF.