Implementando o Dapper para Consultas Eficientes em uma Aplicação .NET
Neste post, vou mostrar como implementei o Dapper na minha aplicação para obter consultas mais eficientes. Vamos explorar desde a configuração do contexto do banco de dados até a criação de queries e repositórios.
Estrutura do Projeto
Para facilitar a compreensão, utilizarei um projeto já existente como exemplo.
Interfaces do Repositório
Precisamos das interfaces para implementar o repositório e receber o serviço via injeção de dependência.
Instalação do Dapper
Primeiramente, instale o pacote Dapper:
Configurando a conexão com o banco de dados
Precisamos configurar a conexão com o banco de dados utilizando IDbConnection
, que representa uma conexão aberta com uma fonte de dados. O Dapper adiciona métodos à interface IDbConnection
que permitem executar consultas SQL e mapear os resultados para objetos no seu código.
Adicionando o repositório
Configuramos o repositório e adicionamos a injeção de dependência.
Chamando os métodos estáticos
Configuramos os métodos estáticos para adicionar os serviços necessários.
Consultas
Criamos uma classe estática chamada ContextMapping
para retornar os nomes das tabelas. Caso a tabela mude de nome, é mais fácil modificar, pois está centralizado em uma única classe.
Classe para retornar a query e parâmetros
Definimos uma classe para encapsular a query e os parâmetros.
Query
Criamos a query para a entidade Admin
.
Implementação no repositório
Vamos detalhar como implementar o repositório para utilizar o Dapper de forma eficiente.
Estrutura do repositório
Primeiro, criamos uma classe AdminRepositorio
que implementa a interface IAdminReadOnlyRepositorio
. Precisamos injetar o IDbConnection
via construtor para que o Dapper possa utilizar uma instância de conexão com o banco de dados.
Chamamos o método RecuperarAdminPorIdQuery
a partir da classe estática e passamos o id via parâmetro.
Utilizamos o método QueryFirstOrDefaultAsync
do Dapper para executar a query. Este método executa a SQL query e mapeia o resultado para a entidade Admin
.
O resultado da query (um objeto Admin
) é retornado pelo método.
Testando o código
Em Program.cs
, adicionamos uma rota para testar a implementação:
Resultado
Conclusão
Neste post, mostramos como usar o Dapper para consultas eficientes em uma aplicação .NET. Configuramos o contexto, serviços de injeção de dependência, definimos queries e implementamos repositórios. Testamos com uma chamada de API, comprovando a eficácia da abordagem.