Curso Entity Framework - Eager Loading - XII
Nesta aula vamos falar sobre Eager Loading no Entity Framework. (aula anterior) |
Nesta aula iremos abordar o Eager Loading.
Eager Load é 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.
Lazy
Loading - é 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 ambiente
Vamos usar a solução criada na aula anterior - Entity Framework - Consultas Projeção - 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# -> 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 projeto EF6_EscolaDB no arquivo App.Config do projeto atual.
A seguir inclua o código abaixo no arquivo Program.cs:
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();
}
}
|
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();
}
}
|
Consulta LINQ | Método LINQ usando expressão lambda |
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.
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
|
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências: