Entity Framework Tutorial Incluir niveles múltiples
¿Cómo incluir múltiples niveles?
La carga impaciente es el proceso mediante el cual una consulta para un tipo de entidad también carga entidades relacionadas como parte de la consulta. La carga impaciente se logra mediante el uso del método Include.
El método Include () funciona bastante bien para las listas en objetos, pero ¿qué pasa si hay una necesidad de múltiples niveles de profundidad? Por ejemplo, el Cliente contiene una lista de facturas y cada factura contiene una lista de artículos.
Preguntas relacionadas con StackOverflow
- Entity Framework - Incluir múltiples niveles de propiedades
- Entity framework linq query Include () varias entidades hijas
Responder
Entity Framework 4.1 a 6
El método Include () permite que se especifique la profundidad requerida de la carga impaciente al proporcionar expresiones Select a la profundidad apropiada.
Usando la Expresión Lambda
using (var context = new EntityContext()) { var customers = context.Customers .Include(i => i.Invoices.Select(it => it.Items)) .ToList(); }
El ejemplo anterior cargará a todos los clientes, sus facturas relacionadas y los elementos de cada factura.
Usando String Path
Cargue todos los clientes, todas sus facturas relacionadas y todos los artículos de cada factura utilizando una cadena para especificar las relaciones.
using (var context = new EntityContext()) { var customers = context.Customers .Include("Invoices.Items") .ToList(); }
Entity Framework Core
EF Core tiene un nuevo método de extensión ThenInclude () . Puede profundizar a través de las relaciones para incluir múltiples niveles de datos relacionados utilizando el método ThenInclude.
using (var context = new MyContext()) { var customers = context.Customers .Include(i => i.Invoices) .ThenInclude(it => it.Items)) .ToList(); }