Estoy usando Entity Framework 5 code first
y ASP.NET MVC 3
.
Estoy luchando para que el objeto hijo de un objeto hijo se complete. Abajo están mis clases ...
Clase de aplicación;
public class Application
{
// Partial list of properties
public virtual ICollection<Child> Children { get; set; }
}
Clase de niño:
public class Child
{
// Partial list of properties
public int ChildRelationshipTypeId { get; set; }
public virtual ChildRelationshipType ChildRelationshipType { get; set; }
}
Clase ChildRelationshipType:
public class ChildRelationshipType
{
public int Id { get; set; }
public string Name { get; set; }
}
Parte del método GetAll en el repositorio para devolver todas las aplicaciones:
return DatabaseContext.Applications
.Include("Children");
La clase Child contiene una referencia a la clase ChildRelationshipType. Para trabajar con los hijos de una aplicación, tendría algo como esto:
foreach (Child child in application.Children)
{
string childName = child.ChildRelationshipType.Name;
}
Aquí aparece un error de que el contexto del objeto ya está cerrado.
¿Cómo especifico que cada objeto secundario debe incluir el ChildRelationshipType
objeto como lo hice anteriormente?
Respuestas:
Si incluye la biblioteca
System.Data.Entity
, puede usar una sobrecarga delInclude()
método que toma una expresión lambda en lugar de una cadena. A continuación, puedeSelect()
sobre los niños con expresiones Linq en lugar destring
rutas.fuente
System.Data.Entity;
Microsoft.Data.Entity
Con EF Core en .NET Core puede usar la palabra clave
ThenInclude
:Incluya niños de la colección para niños:
fuente
Terminé haciendo lo siguiente y funciona:
fuente
Un buen ejemplo del uso del patrón de repositorio genérico y la implementación de una solución genérica para esto podría ser algo como esto.
fuente