O Dapper é um micro ORM que permite a execução de consultas SQL diretamente no banco de dados de forma rápida e eficiente. Ele oferece um mapeamento leve de objetos para resultados de consultas, sendo uma ótima escolha quando você precisa de mais controle sobre as consultas SQL ou quer otimizar o desempenho. Neste exemplo, veremos como realizar uma consulta simples e mapear os resultados para um objeto C# usando o Dapper.
Bibliotecas:
Para usar a biblioteca Dapper, instale o pacote NuGet no seu projeto:
Install-Package Dapper
Install-Package Microsoft.Data.Sqlite
Código de Exemplo:
using Dapper;
using Microsoft.Data.Sqlite;
using System;
using System.Collections.Generic;
namespace DapperExemplo
{
public class Produto
{
public int Id { get; set; }
public string Nome { get; set; }
public decimal Preco { get; set; }
}
class Program
{
static void Main(string[] args)
{
using (var conexao = new SqliteConnection("Data Source=produtos.db"))
{
conexao.Open();
// Criando a tabela
conexao.Execute("CREATE TABLE IF NOT EXISTS Produtos (Id INTEGER PRIMARY KEY, Nome TEXT, Preco REAL)");
// Inserindo um produto
conexao.Execute("INSERT INTO Produtos (Nome, Preco) VALUES (@Nome, @Preco)", new { Nome = "Laptop", Preco = 1500.99m });
// Buscando os produtos
IEnumerable<Produto> produtos = conexao.Query<Produto>("SELECT Id, Nome, Preco FROM Produtos");
// Exibindo os produtos
foreach (var produto in produtos)
{
Console.WriteLine($"Id: {produto.Id}, Nome: {produto.Nome}, Preco: {produto.Preco}");
}
}
}
}
}
Explicação do Código:
Neste exemplo, usamos o Dapper para executar consultas SQL em um banco de dados SQLite. Primeiro, abrimos uma conexão e criamos a tabela Produtos caso ela ainda não exista. Em seguida, inserimos um novo produto na tabela usando o método Execute. Depois, buscamos todos os produtos na tabela com o método Query, que mapeia os resultados para objetos da classe Produto. Por fim, exibimos os produtos no console.
Conclusão:
O Dapper é uma excelente ferramenta para quem busca um micro ORM que ofereça mais controle sobre as consultas SQL, sem comprometer o desempenho. Ele é fácil de usar, flexível e permite um mapeamento rápido de dados para objetos.
Código fonte: GitHub
Top comments (0)