Tengo esta estructura de la tabla de verdad básica:LINQ a Entidades - carga ansiosos usando include()
dbo.tblCategory
dbo.tblQuestion (muchos a una relación a tblCategory)
dbo.tblAnswer (relación de muchos a uno con tblQuestion)
Básicamente, lo que intento hacer es cargar una categoría, también quiero cargar todas las preguntas y todas las respuestas.
Ahora, he sido capaz de hacer esto utilizando el siguiente código:
public tblCategory Retrieve(int id)
{
using (var entities = Context)
{
var dto =
(from t in entities.tblCategory.Include("tblQuestion")
.Include("tblQuestion.tblAnswers")
where t.Id == id
select t).FirstOrDefault();
return entities.DetachObjectGraph(dto);
}
}
}
Sin embargo, no estoy completamente enamorado de este; si los nombres de la relación cambian en mi modelo; No voy a obtener un error al construir el proyecto. Idealmente, me gustaría usar una expresión lambda; algo como esto:
public tblCategory Retrieve(int id)
{
using (var entities = Context)
{
var dto =
(from t in entities.tblCategory.Include(t => t.tblQuestion)
where t.Id == id
select t).FirstOrDefault();
return entities.DetachObjectGraph(dto);
}
}
Ahora, con el fragmento de arriba; Estoy atascado en cómo profundizar en la tabla de respuestas. ¿Alguna idea sobre qué podría usar para una expresión lambda para esta?
Linq to Entities en .NET 4.0 soporta carga diferida (habilitada por defecto) hasta donde yo sé. No necesitas molestarte sobre esto entonces. =) – Jens
Suponiendo que estamos en 4.0. Todavía estamos usando 3.5 por el momento =) –
posible duplicado de [Entity Framework .Include() con comprobación de tiempo de compilación?] (Http://stackoverflow.com/questions/2921119/entity-framework-include-with- tiempo de compilación) –