Curso Entity Framework – Eager Loading
Nesta aula vamos falar sobre Eager Loading no Entity Framework.
Nesta aula vamos falar sobre Eager Loading no Entity Framework, que é o mecanismo pelo qual uma associação, coleção ou atributo é carregado imediatamente quando o objeto principal é carregado.
Dessa forma, todas as relações de uma entidade serão carregadas no mesmo momento em que esta entidade é carregada. É o contrário do Lazy Loading, que é o mecanismo utilizado pelos frameworks de persistência para carregar informações sob demanda. Esse mecanismo torna as entidades mais leves, pois suas associações são carregadas apenas no momento em que o método que disponibiliza o dado associativo é chamado.
Assim, quando objetos são retornados por uma consulta, os objetos relacionados não são carregados ao mesmo tempo, ao invés, eles são carregados automaticamente quando a propriedade de navegação for acessada.
Preparando o ambienteVamos usar a solução criada na aula anterior para mostrar o recurso Eager Loading.
Abra a solução EF6_EscolaDB criada na aula anterior. Após isso, inclua um novo projeto do tipo Console Application com o nome EF6_EagerLoad na solução.
No Menu FILE, clique em Add -> New Project e selecione o template Visual C#↳C#68 conteúdosNovidades do C# 8.0: Default Interface MembersDev (Back & Front) · jun 2019C# 8.0 – Conheça suas novas funcionalidadesDev (Back & Front) · mai 2019Novidades do C# 8.0: Switch ExpressionsDev (Back & Front) · mar 2019Ver tudo em Dev (Back & Front) → -> Console Application informando o nome EF6_EagerLoad:
Para concluir, inclua uma referência no projeto EF6_EagerLoad para o projeto EF6_EscolaDB, inclua também a string de conexão do projetoEF6_EscolaDB no arquivo App.Config do projeto atual.
A seguir, inclua o código abaixo no arquivo Program.cs:
Consulta LINQ
private static void consulta_Eager_Loading1()
{
using (var ctx = new EscolaDBEntities())
{
var aluno = (from a in ctx.Alunos.Include("Padrao")
where a.AlunoNome == "Janice"
select a).FirstOrDefault<Aluno>();
Console.WriteLine(aluno.Cursos..PadraoId.ToString());
Console.WriteLine(aluno.Padrao.PadraoNome.ToString());
Console.ReadKey();
}
}
Método LINQ usando expressão lambda
private static void consulta_Eager_Loading1()
{
using (var ctx = new EscolaDBEntities())
{
var _aluno = ctx.Alunos.Include("Padrao").Where(a => a.AlunoNome == "Janice").FirstOrDefault();
Console.WriteLine(_aluno.Padrao.PadraoId.ToString());
Console.WriteLine(_aluno.Padrao.PadraoNome.ToString());
Console.ReadKey();
}
}
O código demonstra o recurso eager loading, onde a entidade Padrao será também carregada com a entidade Alunos, usando o método Include.
Podemos também usar o recurso eager loading para carregar múltiplos níveis de entidades relacionadas.
No código abaixo temos um exemplo que mostra como carregar as entidades Aluno, Padrao e Professores relacionadas:
private static void consulta_Eager_Loading2()
{
using (var ctx = new EscolaDBEntities())
{
var aluno = (from a in ctx.Alunos.Include("Padrao.Professores")
where a.AlunoNome == "Janice"
select a).FirstOrDefault<Aluno>();
Console.ReadKey();
}
}
No eager load é preciso informar o caminho completo das associações que você deseja recuperar, caso contrário, os objetos não serão carregados.
Na próxima aula vamos tratar Lazy Loading no Entity Framework.









Luiz Fernando Duarte Junior
José Carlos Macoratti




