Curso Entity Framework - Lazy Loading - XIII
Nesta aula vamos falar sobre Lazy Loading no Entity Framework. (aula anterior) |
Nesta aula iremos abordar o Lazy Loading.
Lazy Load é o mecanismo utilizado pelos frameworks de persistência para carregar informações sobre 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.
Para desabilitar o lazy loading no Entity Framework defina a propriedade context.Configuration.LazyLoadingEnabled como false.
Preparando o ambiente
Vamos usar a solução criada na aula 11 - Entity Framework - Consultas Projeção - para mostrar o recurso Lazy 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_LazyLoad na solução;
Para concluir inclua uma referência ao projeto EF6_LazyLoad para o projeto EF6_EscolaDB, inclua a string de conexão no arquivo App.Config do projeto.
No lazy loading o Entity Framework adia o carregamento das entidades relacionadas até você especificar isso em uma requisição explicitamente.
Vejamos um exemplo deste comportamento no trecho de código abaixo onde estamos obtendo os alunos e a seguir seus endereços:
A classe Aluno contém a propriedade complexa AlunoEndereco.
No modo padrão o contexto do EF atua da seguinte forma:
private static void consulta_Lazy_Loading1() { using (var ctx = new EscolaDBEntities()) { //carrega apenas os alunos IList<Aluno> listaAlunos = ctx.Alunos.ToList<Aluno>(); Aluno aluno = listaAlunos[0];
//carrega os enderecos para um aluno particular
AlunoEndereco ende = aluno.AlunoEndereco;
}
}
|
Private Shared Sub consulta_Lazy_Loading1()
Using ctx = New EscolaDBEntities()
'carrega apenas os alunos
Dim listaAlunos As IList(Of Aluno) = ctx.Alunos.ToList(Of Aluno)()
Dim aluno As Aluno = listaAlunos(0)
'carrega os enderecos para um aluno particular
Dim ende As AlunoEndereco = aluno.AlunoEndereco
End Using
End Sub
|
versão C# | versão VB .NET |
Temos aqui o que é conhecido como Lazy Load , ou em outras palavras :
"se o programador não solicitar a carga, o relacionamento entre entidades não será recuperado."
Na próxima aula vamos tratar do Explicity Loading no Entity Framework.
Em tudo somos atribulados, mas não
angustiados; perplexos, mas não desanimados.
Perseguidos, mas não desamparados; abatidos, mas não destruídos;
Trazendo sempre por toda a parte a mortificação do Senhor Jesus no nosso corpo,
para que a vida de Jesus se manifeste também nos nossos corpos;
2 Coríntios 4:8-10
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: