Eu estou usando Entity Framework 5 code first
e ASP.NET MVC 3
.
Estou lutando para que o objeto filho de um objeto filho seja preenchido. Abaixo estão minhas aulas ..
Classe de aplicação;
public class Application
{
// Partial list of properties
public virtual ICollection<Child> Children { get; set; }
}
Classe da criança:
public class Child
{
// Partial list of properties
public int ChildRelationshipTypeId { get; set; }
public virtual ChildRelationshipType ChildRelationshipType { get; set; }
}
Classe ChildRelationshipType:
public class ChildRelationshipType
{
public int Id { get; set; }
public string Name { get; set; }
}
Parte do método GetAll no repositório para retornar todos os aplicativos:
return DatabaseContext.Applications
.Include("Children");
A classe Child contém uma referência à classe ChildRelationshipType. Para trabalhar com os filhos de um aplicativo, eu teria algo assim:
foreach (Child child in application.Children)
{
string childName = child.ChildRelationshipType.Name;
}
Eu recebo um erro aqui que o contexto do objeto já está fechado.
Como especifico que cada objeto filho deve incluir o ChildRelationshipType
objeto como o que fiz acima?
Respostas:
Se você incluir a biblioteca,
System.Data.Entity
poderá usar uma sobrecarga doInclude()
método que usa uma expressão lambda em vez de uma sequência. Você pode entãoSelect()
sobre filhos com expressões Linq em vez destring
caminhos.fonte
System.Data.Entity;
Microsoft.Data.Entity
Com o EF Core no .NET Core, você pode usar a palavra
ThenInclude
- chave :Inclua crianças da coleção infantil:
fonte
Acabei fazendo o seguinte e funciona:
fonte
Um bom exemplo de uso do padrão Generic Repository e implementação de uma solução genérica para isso pode se parecer com isso.
fonte