Utilizando Múltiplos Resultados no Dapper

O Dapper já é muito conhecido entre os desenvolvedores .NET, aqui no blog eu já escrevi um artigo explicando o que é o Dapper (Clique aqui) e outro falando como podemos mapear coleções com o Dapper (Clique aqui). Uma outra forma bem bacana de se fazer o mapeamento de coleções é usando a técnica de múltiplos resultados, onde são executadas várias querys ao mesmo tempo e retornado vários objetos, nesse artigo vou mostrar como fazer o uso dessa técnica.

Criando nosso projeto Dapper

Para o exemplo vamos utilizar uma aplicação console .NET core, e um banco de dados Sql Server, para iniciar vamos ao Visual Studio 2019 e criamos um novo projeto:

Depois vamos colocar o nome no nosso projeto e clicar em Create

Após ter criado o projeto precisamos adicionar 2 referências ao projeto, a do System.Data.SqlClient e depois a do Dapper, para isso vamos ao Solution Explorer em Dependencies e vamos clicar com o botão direito e vamos ao Manage Nuget Packes.

Vamos buscar o System.Data.SqlClient e instalar a dependência em nosso projeto.

Depois vamos instalar o Dapper.

Com isso já podemos montar nosso exemplo.

Estrutura básica para fazer as consultas.

Para iniciar vamos configurar a conexão com o banco de dados, vamos até o nosso Program.cs e vamos colocar o seguinte código:

Com isso já podemos passar ao Dapper nossa conexão para efetuar nossas querys.

No nosso exemplo vamos criar duas entidades, uma chamada Cliente e outra Empresa, conforme abaixo:

Cliente.cs

Empresa.cs

Como podemos ver, cada empresa vai ter uma lista de clientes.

Para o exemplo foi adicionado 5 empresas e cadastrado alguns clientes dentro de cada empresa:

Utilizando o múltiplo resultado

Agora vamos utilizar a técnica de múltiplo resultado do Dapper, primeiro vamos criar uma variável recebendo todas as consultas.

Agora vamos utilizar o método QueryMultiple do Dapper, onde ele retorta um objeto do tipo GridReader, que vai ser utilizado para mapear nossos objetos. Para o exemplo foi utilizado um for para iteração das chaves das empresas, abaixo segue o código do QueryMultiple:

Podemos ver que é muito simples de utilizar, basta pegar o retorno do QueryMultiple e após isso utilizar o método Read(), onde é o objeto que vai ser mapeado.

O resultado ao executar a aplicação é esse:

Conclusão

Podemos ver que dessa forma fica mais fácil de mapear uma entidade e suas devidas entidades filhas. Outro ponto é que facilita a leitura do código. O exemplo completo do código você encotra no github.

Código de exemplo:

https://github.com/tborgesvieira/Dapper-Multiple-Query

Posted in .NET, .NET Core, Blog, C#, Dapper.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *