Programação com C# LINQ e Entity Framework

Neste post, vamos falar sobre o LINQ, uma das funcionalidades mais interessantes do C#. Ele foi criado com o intuito de padronizar as formas de consultas de dados. Normalmente, para acessar dados em um banco de dados relacional ou um arquivo Excel, é necessário utilizar linguagens diferentes, como SQL para bancos relacionais. O LINQ nos permite realizar todas essas consultas utilizando uma única sintaxe, diretamente com os objetos do nosso sistema.

Exemplo Prático de LINQ

Vamos aproveitar o mesmo exemplo do post anterior Integração com PostgreSQL em C# – Brabo Dev, onde termos uma lista de alunos, onde cada aluno tem uma idade, nome e curso. Aqui está um exemplo do código.

 

Vamos fazer uma filtragem para trazer apenas os alunos que estão cursando Direito. Primeiro, mostramos como isso seria feito com a abordagem tradicional.

Método Tradicional

Criamos uma nova lista de alunos de Direito. Percorremos a lista de alunos existente com um foreach. Dentro do foreach, utilizamos uma condição if para verificar se o curso do aluno é Direito. Se for, adicionamos o aluno à nova lista. Imprimimos essa nova lista na tela.

Embora esse método funcione bem, ele pode ser otimizado com o uso do LINQ, reduzindo a quantidade de código e melhorando a performance.

Utilizando LINQ

Com LINQ, podemos simplificar o código. A sintaxe do LINQ permite realizar a filtragem diretamente na lista original. Abaixo mostramos como fazer isso:

Neste exemplo, utilizamos a sintaxe do LINQ para percorrer a lista de alunos e aplicar a condição diretamente na consulta. O código é muito mais conciso do que o método tradicional.

Outra maneira de usar o LINQ é aplicá-lo diretamente no objeto lista, como mostrado abaixo:

Aqui, utilizamos o método Where diretamente no objeto alunos, o que torna o código ainda mais simples e direto. Sendo assim, nosso código fica dessa forma:

Introdução ao Entity Framework

Agora, vamos ver como integrar o LINQ com o Entity Framework (EF), que é uma ferramenta moderna de acesso a dados em C#. Ele permite manipular dados de forma mais eficiente, adicionando valores e realizando consultas diretamente no banco de dados. Vamos usar o Entity Framework no lugar do DataSet tradicional para fazer essa integração.

Configurando o Entity Framework

  1. Primeiro, precisamos instalar o Entity Framework. Usamos o NuGet Package Manager para instalar o pacote Npgsql.EntityFrameworkCore.PostgreSQL, que faz a integração com o PostgreSQL.
  2. Em seguida, substituímos o antigo método de conexão por um contexto do Entity Framework, que facilita a comunicação com o banco.

    Obs.: A classe que herda de DbContext é responsável por gerenciar as operações no banco de dados, como mapear tabelas para classes do sistema.

  3. Definimos as propriedades da classe Aluno para corresponderem às colunas do banco de dados. Se houver diferenças nos nomes, utilizamos o atributo [Table("NomeDaTabela")] para alinhar isso.

    Obs.: Para identificar a chave primária da tabela, utilizamos o atributo [Key] no campo correspondente.

Agora que configuramos tudo, podemos começar a fazer consultas e inserções no banco de dados.

Consultando Dados com o Entity Framework e LINQ

Aqui está um exemplo de como buscar todos os alunos usando o Entity Framework com LINQ:

Isso retorna uma lista de alunos diretamente da tabela do banco de dados.

Adicionando Dados com o Entity Framework

Para adicionar um novo aluno no banco de dados, podemos fazer da seguinte forma:

A estrutura do código fica muito mais enxuta e fácil de entender, e podemos gerenciar os dados com muito menos código.

Testando a Aplicação

Rodamos a aplicação para verificar se as alterações funcionam. O sistema carregou corretamente os alunos do banco de dados. Também testamos a inserção de um novo aluno. Após adicionar o aluno, verificamos se ele foi salvo com sucesso ao rodar o projeto novamente. Tudo funcionou conforme o esperado, com as consultas e inserções sendo feitas via Entity Framework e LINQ.

Conclusão

Nesta aula, vimos uma introdução ao LINQ e como ele pode simplificar o código de consultas e filtragens em listas. Também introduzimos o Entity Framework, uma poderosa ferramenta para manipulação de dados que trabalha em conjunto com o LINQ para facilitar a integração com bancos de dados. Com o LINQ e o Entity Framework, podemos otimizar o acesso a dados de maneira muito mais eficiente e com menos código.

Se você quiser acompanhar o tutorial completo, acesse o vídeo e inscreva-se no canal do BraboDev.

“E a luz resplandece nas trevas, e as trevas não a compreenderam”

João 1:5