LINQ - Apresentando LINQ Include


 Hoje vou apresentar os recursos do LINQ Include mostrando a sua atuação.

O LINQ Include fornece a capacidade de incluir entidades relacionadas a serem carregadas do banco de dados.


Há várias maneiras de ler dados da fonte de dados e carregar resultados nas propriedades de navegação de uma entidade. O Eager Loading fornece a funcionalidade do LINQ Include() recuperando os dados relacionados sempre que a entidade é lida.

Isso produzirá um grande conjunto de resultados no início, mas não serão enviadas mais consultas ao banco de dados para buscar os dados relacionados. Pelo contrário, várias consultas serão chamadas para recuperar os dados relacionados sem a função Include(). As outras duas opções são carregamento lento ou Lazy Loading e carregamento explícito, que não recuperam os dados relacionados em uma única consulta de junção.

Se o requisito for recuperar os dados relacionados para cada entidade, o carregamento antecipado é a melhor opção para usar nesse cenário, porque uma única chamada é feita ao banco de dados em vez de enviar vários comandos para buscar os dados usando a função Include(). A função Include() pode resultar em uma junção complexa que será interpretada pelo SQL.

Como usar expressões Lambda com LINQ Include

Em versões anteriores do Entity Framework, você precisava passar o nome da propriedade de navegação como um argumento entre aspas para a função LINQ Include(), e neste cenário, o compilador não conseguia identificar os erros de compilação até que o aplicativo estivesse no modo de execução e executasse o comando. A outra desvantagem disso é que você não pode usar o Intellisense e o recurso de refatoração.

LINQ Include x Join

A função Include() retém a estrutura e os objetos originais das entidades, enquanto a função Join fornece a representação plana dos dados. Ambos irão adquirir os mesmos resultados, mas a representação é diferente para cada função. O código a seguir ilustra a diferença de programação entre as funções Include e Join:

LINQ Include x Where

A função Include é uma alternativa para a função Where no LINQ. O código a seguir ilustra a diferença de programação entre as funções Include e Where:

LINQ Include vs Select

As funções Include e Select fornecem a funcionalidade de recuperar uma lista ou um único objeto. O código a seguir ilustra a diferença entre as funções :

LINQ Include vs SelectMany

As funções Include() e SelectMany() fornecem dados de recuperação em vários níveis. O código a seguir ilustra a diferença entre essas funções:

E estamos conversados...

"Louvai ao SENHOR todas as nações, louvai-o todos os povos.
Porque a sua benignidade é grande para conosco, e a verdade do Senhor dura para sempre. Louvai ao Senhor."
Salmos 117:1,2

Referências:


José Carlos Macoratti