SELECT COM DAPPER E WINFORMS

*imagem feita com base no freepik.com

Como fazer select utilizando Dapper com WinForms

Olá caro leitor. Dando continuidade nos artigos referentes à minha experiência com Dapper, neste artigo irei mostrar como utilizar o Dapper para realizar um select no Windows Forms de forma simples e fácil.

Utilizando como base o projeto do artigo anterior, pois nele tem o que nos interessa e é com base nele que vamos fazer toda essa série de artigos.

Bom, para seguir este artigo, recomendo ter baixado o projeto que está no GitHub para utilizarmos como base e você seguir de forma efetiva os passos.

Vou pular as etapas de configuração do projeto. Caso não tenha visto, acesse este link e leia o artigo anterior.

Beleza, depois de ler, vamos lá. Let’s GOOO!!

Este artigo tende a ser menos porque vamos mostrar como fazer um select, o que é beeeem fácil.

O Dapper funciona de uma maneira bem semelhante ao ADO.NET, como eu já comentei. Só que ao invés de retornar um DataTable, você verá que ele retorna uma entidade totalmente preenchida com os dados que você quer. Mas Érik, como assim??? Uma entidade?

Yep! Uma entidade. O que acontece na prática é que você configura uma entidade com os dados exatos que você necessita e o Dapper se encarrega de fazer o bind das informações.

Isso inclui você colocar alias no seu select se for o caso, para que você possa retornar os dados com mais facilidade de entendimento. Em outras palavras, caso você tenha definido na sua entidade um nome para a propriedade que seja diferente do que está definido em seu banco de dados, você pode fazer um alias que o Dapper é inteligente o suficiente para fazer o bind das informações e preencher a entidade.

Tá tudo muito bom, tá tudo muito bem, PORÉM EU QUERO CÓDIGO ÉRIK!!!! Ok dokey! Teremos seu código. Se liga nos passos:

1º — Defina o que deverá ser retornado em sua entidade. Digo, as propriedades, conforme exemplo abaixo:

using System;
using ExcluiDadosDuplicados.Repositories;

namespace ExcluiDadosDuplicados.Queries
{
// Classe que representa a entidade1
public class Entity1 : IQuery
{
public int Id { get; set; }
public int Prop2 { get; set; }
public int Prop3 { get; set; }
public string Prop4 { get; set; }
public string Prop5 { get; set; }
public string Prop6 { get; set; }
}
}

* Lembrando que o IQuery é uma interface que já implementa a propriedade Id. Ela foi feita para reutilização de código, ok?

2º — Após definir suas propriedades, vamos configurar o método que será utilizado para realmente fazer o select. Novamente, conforme código abaixo:

using Dapper;
using ExcluiDadosDuplicados.Queries;
using ExcluiDadosDuplicados.SQLConnections;
using System;
using System.Linq;

namespace ExcluiDadosDuplicados.Repositories
{
// Classe responsável pelas operações no banco de dados
public class BaseRepository : IBaseRepository
{
public DapperDBConnection _dBConnection;

public BaseRepository(DapperDBConnection dBConnection)
{
_dBConnection = dBConnection;
}

public void Dispose()
{
GC.SuppressFinalize(this);
}

/// <summary>
/// Realiza a pesquisa no banco de dados
/// </summary>
/// <param name="data">dado a ser pesquisado</param>
/// <returns>Retorna os dados da tabela</returns>
public IQueryable<IQuery> GetData(string data)
{
return _dBConnection
.Connection
.Query<Entity1>(@"SELECT [Id], [Prop1], [Prop2], [Prop3], [Prop4]
FROM Table INNER JOIN Table2 ON Table1_Table2Id = Table2Id
LEFT JOIN Table3 ON Table2_Table3Id = Table3Id
WHERE [Prop1] = @Data AND Prop3 = 1
ORDER BY [Prop3]",
new { Data = data }).AsQueryable();
}

}
}
}

Beleza. Como foi demostrado, podemo fazer também vários joins que não há problema. O importante é que você defina suas propriedades no select para o Dapper possa fazer o bind.

Agora, como vamos utilizar essa lógica? Simples, chama o repô aonda for necessário e utilizar a rotina. Exemplo:

// Pesquisa o dado relacionado
var dadosEnvolvidos = _baseRepository.GetDataEnvolved(entity1.Id);

É isso ai! Terminamos! Agora você já pode usar o Dapper em seu projeto para fazer pesquisas.

Críticas construtivas são muito bem vindas. O projeto está no GitHub. Como é aberto, caso queiram contribuir, à vontade!!

Like what you read? Give Érik Thiago a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.