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:


José Carlos Macoratti