framework first code entity-framework ef-code-first eager-loading

entity-framework - entity framework code first relationships



¿Cómo deseo incluir con entusiasmo los elementos hijo y nieto de una entidad en Entity Framework Code First? (2)

Imagine tres entidades (Cliente, Libro, Autor) relacionadas de esta manera:

Un cliente tiene muchos libros

Un libro tiene un autor

Yo uso esa información para imprimir un informe como este:

Customer: Peter Book: To Kill a Mockingbird - Author: Harper Lee Book: A Tale of Two Cities - Author: Charles Dickens Customer: Melanie Book: The Hobbit - Author: J. R. R. Tolkien

Cuando consulto Clientes obtengo, como era de esperar, un grupo de consultas de la siguiente naturaleza

  1. Una consulta para obtener los clientes
  2. Una consulta por cliente para obtener sus libros
  3. Una consulta por libro para obtener su autor

Puedo reducir el número de consultas al incluir los libros de esta manera:

var customers = db.Customers.Include (c => c.Books);

Pero no sé cómo cargar el tercer nivel (autor). ¿Cómo puedo hacer eso?



Hay una sobrecarga para Include que acepta una cadena que puede indicar la ruta completa a las propiedades adicionales que necesita:

var customers = db.Customers.Include("Books.Author");

Parece extraño porque "Autor" no es una propiedad en una colección de libros (sino una propiedad en cada libro individual) pero funciona. Darle un giro.