
Elegante C# (Como funciona para desenvolvedores)
No desenvolvimento de software moderno, o acesso eficiente a bancos de dados é crucial para o desempenho e a escalabilidade das aplicações. O Dapper , um mapeador objeto-relacional (ORM) leve para .NET, oferece uma abordagem simplificada para interação com bancos de dados. Neste artigo, exploraremos como usar o Dapper C# com um arquivo de banco de dados SQLite, demonstrando sua simplicidade e eficácia por meio de exemplos de código. Além disso, apresentarei a notável biblioteca de geração de PDF chamada IronPDF , da Iron Software .
O que é Dapper?
Dapper é um framework de mapeamento objeto-relacional (ORM) para a plataforma .NET . É um mapeador de objetos simples que permite mapear um modelo de domínio orientado a objetos para um banco de dados relacional tradicional. O Dapper é conhecido por sua velocidade e desempenho, sendo frequentemente chamado de "Rei dos Micro ORMs". Ele iguala a velocidade de um leitor de dados .NET puro e aprimora a interface IDbConnection com métodos de extensão úteis para consultar bancos de dados SQL.
Principais características do Dapper
- Desempenho: O Dapper é conhecido por seu excelente desempenho devido ao seu design leve e mapeamento de objetos eficiente.
- Simplicidade: A API do Dapper é minimalista e intuitiva, facilitando o seu entendimento e utilização eficaz por parte dos desenvolvedores.
- Suporte a SQL puro: O Dapper permite que os desenvolvedores escrevam consultas SQL puras, proporcionando controle total sobre as interações com o banco de dados.
- Mapeamento de objetos: O Dapper mapeia os resultados da consulta diretamente para objetos C#, reduzindo o código repetitivo e melhorando a legibilidade do código.
- Consultas parametrizadas: O Dapper suporta consultas parametrizadas, protegendo contra ataques de injeção de SQL e melhorando o desempenho.
- Mapeamento múltiplo: O Dapper lida perfeitamente com relacionamentos um-para-muitos e muitos-para-muitos, permitindo que várias consultas sejam executadas de forma eficiente, simplificando assim a recuperação de dados complexos.
Acesso assíncrono a dados com Dapper
O Dapper oferece métodos de extensão assíncronos que espelham suas contrapartes síncronas, permitindo que os desenvolvedores executem consultas de banco de dados de forma assíncrona. Esses métodos assíncronos são ideais para operações com uso intensivo de E/S, como consultas a bancos de dados, em que o thread principal pode continuar executando outras tarefas enquanto aguarda a conclusão da operação no banco de dados.
Principais métodos assíncronos em Dapper
QueryAsync: Executa uma consulta SQL assincronamente e retorna o resultado como uma sequência de objetos dinâmicos ou objetos fortemente tipados.QueryFirstOrDefaultAsync: Executa uma consulta SQL assincronamente e retorna o primeiro resultado ou um valor padrão se nenhum resultado for encontrado.ExecuteAsync: Executa um comando SQL assincronamente (por exemplo, INSERT, UPDATE, DELETE) e retorna o número de linhas afetadas.
Preparando o ambiente: Antes de analisar os exemplos de código, certifique-se de ter as ferramentas necessárias instaladas:
- Visual Studio ou Visual Studio Code.
- SDK .NET .
- Pacote SQLite for .NET.
Para instalar o pacote SQLite, execute o seguinte comando no diretório do seu projeto:
dotnet add package Microsoft.Data.Sqlite
Criando um banco de dados SQLite: Para fins de demonstração, vamos criar um arquivo de banco de dados SQLite simples chamado "example.db" com uma tabela "Users" contendo colunas para "Id", "Name" e "Email".
CREATE TABLE Users (
Id INTEGER PRIMARY KEY,
Name TEXT,
Email TEXT
);
Utilizando Dapper com SQLite
- Primeiro, certifique-se de ter importado os namespaces necessários:
using Microsoft.Data.Sqlite;
using Dapper;Imports Microsoft.Data.Sqlite
Imports Dapper-
Estabeleça uma conexão com o banco de dados SQLite:
string connectionString = "Data Source=example.db"; // SQLite database connection string using (var connection = new SqliteConnection(connectionString)) { connection.Open(); // Your Dapper queries will go here }Dim connectionString As String = "Data Source=example.db" ' SQLite database connection string Using connection = New SqliteConnection(connectionString) connection.Open() ' Your Dapper queries will go here End Using -
Execute uma consulta com o Dapper:
// Define a class to represent the structure of a user public class User { public int Id { get; set; } public string Name { get; set; } public string Email { get; set; } } // Query to select all users string query = "SELECT * FROM Users"; // SQL query var users = connection.Query<User>(query).ToList(); // Display the results foreach (var user in users) { Console.WriteLine($"Id: {user.Id}, Name: {user.Name}, Email: {user.Email}"); }' Define a class to represent the structure of a user Public Class User Public Property Id() As Integer Public Property Name() As String Public Property Email() As String End Class ' Query to select all users Private query As String = "SELECT * FROM Users" ' SQL query Private users = connection.Query(Of User)(query).ToList() ' Display the results For Each user In users Console.WriteLine($"Id: {user.Id}, Name: {user.Name}, Email: {user.Email}") Next user -
Insira dados no banco de dados usando o Dapper:
// Define a new user var newUser = new User { Name = "John Doe", Email = "john@example.com" }; // SQL query/stored procedure to insert a new user string insertQuery = "INSERT INTO Users (Name, Email) VALUES (@Name, @Email)"; // Execute the query connection.Execute(insertQuery, newUser);' Define a new user Dim newUser = New User With { .Name = "John Doe", .Email = "john@example.com" } ' SQL query/stored procedure to insert a new user Dim insertQuery As String = "INSERT INTO Users (Name, Email) VALUES (@Name, @Email)" ' Execute the query connection.Execute(insertQuery, newUser)
Apresentando o IronPDF
IronPDF é uma biblioteca C# da Iron Software que permite aos desenvolvedores criar, editar e manipular documentos PDF programaticamente em aplicações .NET . Oferece funcionalidades como gerar documentos PDF a partir de HTML, imagens e outros formatos, além de adicionar texto, imagens e diversos elementos a arquivos PDF existentes. O IronPDF visa simplificar as tarefas de geração e manipulação de PDFs para desenvolvedores .NET , fornecendo um conjunto abrangente de ferramentas e APIs.
O IronPDF oferece uma gama de recursos para geração e manipulação de PDFs em aplicações .NET :
- Conversão de HTML para PDF: Converta conteúdo HTML, incluindo estilos CSS, em documentos PDF.
- Conversão de imagem para PDF: Converta imagens (como JPEG, PNG, BMP) em documentos PDF.
- Conversão de texto para PDF: Converta texto simples ou texto formatado (RTF) em documentos PDF.
- Geração de PDF: Crie documentos PDF do zero programaticamente.
- Edição de PDF: Edite documentos PDF existentes adicionando ou modificando texto, imagens e outros elementos.
- Fusão e divisão de PDFs: Combine vários documentos PDF em um único documento ou divida um documento PDF em vários arquivos.
- Segurança de PDF: Aplique proteção por senha e criptografia a documentos PDF para restringir o acesso e proteger informações confidenciais.
- Preenchimento de formulários em PDF: Preencha formulários em PDF com dados de forma programática.
- Impressão de PDF: Imprima documentos PDF diretamente do seu aplicativo .NET .
- Configurações de conversão para PDF: Personalize diversas configurações, como tamanho da página, orientação, margens, compressão e muito mais durante a geração do PDF.
- Extração de texto de PDF: Extrai o conteúdo de texto de documentos PDF para posterior processamento ou análise.
- Metadados de PDF: Defina os metadados (autor, título, assunto, palavras-chave) para documentos PDF.
Gerando documentos PDF com IronPDF e Dapper
Crie um aplicativo de console no Visual Studio.

Forneça o nome e a localização do projeto.

Selecione a versão do .NET

Instale os seguintes pacotes usando o Gerenciador de Pacotes do Visual Studio ou o console.
dotnet add package Microsoft.Data.Sqlite

dotnet add package Dapper --version 2.1.35


Utilize o código abaixo para gerar um documento PDF:
using Dapper; // Import Dapper for ORM functionalities
using IronPdf; // Import IronPDF for PDF generation
using Microsoft.Data.Sqlite; // Import Sqlite for database connection
// Define the connection string for SQLite database
string connectionString = "Data Source=ironPdf.db";
// Create a string to hold the content for the PDF document
var content = "<h1>Demonstrate IronPDF with Dapper</h1>";
// Add HTML content
content += "<h2>Create a new database using Microsoft.Data.Sqlite</h2>";
content += "<p>new SqliteConnection(connectionString) and connection.Open()</p>";
// Open the database connection
using (var connection = new SqliteConnection(connectionString))
{
connection.Open();
// Create a Users Table using Dapper
content += "<h2>Create a Users Table using Dapper and SQL insert query</h2>";
content += "<p>CREATE TABLE IF NOT EXISTS Users</p>";
// SQL statement to create a Users table
string sql = "CREATE TABLE IF NOT EXISTS Users (\n Id INTEGER PRIMARY KEY,\n Name TEXT,\n Email TEXT\n);";
connection.Execute(sql);
// Add Users to table using Dapper
content += "<h2>Add Users to table using Dapper</h2>";
content += AddUser(connection, new User { Name = "John Doe", Email = "john@example.com" });
content += AddUser(connection, new User { Name = "Smith William", Email = "Smith@example.com" });
content += AddUser(connection, new User { Name = "Rock Bill", Email = "Rock@example.com" });
content += AddUser(connection, new User { Name = "Jack Sparrow", Email = "Jack@example.com" });
content += AddUser(connection, new User { Name = "Tomus Tibe", Email = "Tomus@example.com" });
// Retrieve and display users from database
content += "<h2>Get Users From table using Dapper</h2>";
string query = "SELECT * FROM Users";
var users = connection.Query<User>(query).ToList();
// Display each user detail retrieved from the database
foreach (var user in users)
{
content += $"<p>Id:{user.Id}, Name:{user.Name}, email: {user.Email}</p>";
Console.WriteLine($"{user.Id}. User Name:{user.Name}, Email:{user.Email}");
}
// Create PDF from the accumulated HTML content
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(content);
// Save the PDF to a file
pdf.SaveAs("dapper.pdf");
}
// Method to add user to the database and accumulate HTML content
string AddUser(SqliteConnection sqliteConnection, User user)
{
string insertQuery = "INSERT INTO Users (Name, Email) VALUES (@Name, @Email)";
sqliteConnection.Execute(insertQuery, user);
return $"<p>Name:{user.Name}, email: {user.Email}</p>";
}Imports Dapper ' Import Dapper for ORM functionalities
Imports IronPdf ' Import IronPDF for PDF generation
Imports Microsoft.Data.Sqlite ' Import Sqlite for database connection
' Define the connection string for SQLite database
Dim connectionString As String = "Data Source=ironPdf.db"
' Create a string to hold the content for the PDF document
Dim content As String = "<h1>Demonstrate IronPDF with Dapper</h1>"
' Add HTML content
content += "<h2>Create a new database using Microsoft.Data.Sqlite</h2>"
content += "<p>new SqliteConnection(connectionString) and connection.Open()</p>"
' Open the database connection
Using connection As New SqliteConnection(connectionString)
connection.Open()
' Create a Users Table using Dapper
content += "<h2>Create a Users Table using Dapper and SQL insert query</h2>"
content += "<p>CREATE TABLE IF NOT EXISTS Users</p>"
' SQL statement to create a Users table
Dim sql As String = "CREATE TABLE IF NOT EXISTS Users (" & vbCrLf & " Id INTEGER PRIMARY KEY," & vbCrLf & " Name TEXT," & vbCrLf & " Email TEXT" & vbCrLf & ");"
connection.Execute(sql)
' Add Users to table using Dapper
content += "<h2>Add Users to table using Dapper</h2>"
content += AddUser(connection, New User With {.Name = "John Doe", .Email = "john@example.com"})
content += AddUser(connection, New User With {.Name = "Smith William", .Email = "Smith@example.com"})
content += AddUser(connection, New User With {.Name = "Rock Bill", .Email = "Rock@example.com"})
content += AddUser(connection, New User With {.Name = "Jack Sparrow", .Email = "Jack@example.com"})
content += AddUser(connection, New User With {.Name = "Tomus Tibe", .Email = "Tomus@example.com"})
' Retrieve and display users from database
content += "<h2>Get Users From table using Dapper</h2>"
Dim query As String = "SELECT * FROM Users"
Dim users = connection.Query(Of User)(query).ToList()
' Display each user detail retrieved from the database
For Each user In users
content += $"<p>Id:{user.Id}, Name:{user.Name}, email: {user.Email}</p>"
Console.WriteLine($"{user.Id}. User Name:{user.Name}, Email:{user.Email}")
Next
' Create PDF from the accumulated HTML content
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(content)
' Save the PDF to a file
pdf.SaveAs("dapper.pdf")
End Using
' Method to add user to the database and accumulate HTML content
Function AddUser(sqliteConnection As SqliteConnection, user As User) As String
Dim insertQuery As String = "INSERT INTO Users (Name, Email) VALUES (@Name, @Email)"
sqliteConnection.Execute(insertQuery, user)
Return $"<p>Name:{user.Name}, email: {user.Email}</p>"
End FunctionExplicação do código
- Comece criando um contêiner de conteúdo de texto para geração de PDF.
- Crie um novo banco de dados usando
Microsoft.Data.Sqlite,connection.Open()criará um banco de dados vazio. - Crie uma Tabela
Usersusando Dapper e execute consultas SQL para inserção. - Adicione usuários à tabela usando Dapper com consultas de inserção.
- Consulta para selecionar todos os usuários do banco de dados.
- Salve o conteúdo gerado como PDF usando os métodos
ChromePdfRenderereSaveAsfornecidos pelo IronPDF.
Saída

Licença (Versão de avaliação disponível para IronPDF)
As informações de licenciamento do IronPDF estão disponíveis para garantir a conformidade e o uso correto dentro do seu projeto.
Uma licença de avaliação para desenvolvedores pode ser obtida através da página de licença de avaliação do IronPDF .
Por favor, substitua a Chave no arquivo appSettings.json mostrado abaixo:
{
"IronPdf.License.LicenseKey" : "The Key Goes Here"
}
Conclusão
O Dapper simplifica o acesso a dados em aplicações .NET e, quando combinado com o SQLite, oferece uma solução leve e eficiente para o gerenciamento de bancos de dados. Seguindo os passos descritos neste artigo, você poderá usar o Dapper para interagir com bancos de dados SQLite de forma integrada, permitindo criar aplicações robustas e escaláveis com facilidade. Juntamente com o IronPDF, os desenvolvedores podem adquirir habilidades relacionadas a bancos de dados ORM, como o Dapper, e bibliotecas de geração de PDF, como o IronPDF.

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais bem estruturados e visualmente atraentes.
Artigos relacionados


