AYUDA .NET

Dapper C# (Cómo funciona para desarrolladores)

Publicado en 6 de junio, 2024
Compartir:

Introducción

En el desarrollo de software moderno, el acceso eficiente a las bases de datos es crucial para el rendimiento y la escalabilidad de las aplicaciones. Dapperun mapeador objeto-relacional ligero(ORM) para .NET, ofrece un enfoque racionalizado de la interacción con las bases de datos. En este artículo, exploraremos cómo utilizar Dapper C# con un archivo de base de datos SQLite, demostrando su sencillez y eficacia mediante ejemplos de código. Además, presentaré la extraordinaria biblioteca de generación de PDF llamadaIronPDF deIron Software.

¿Qué es Dapper?

Dapper es un mapeo objeto-relacional(ORM) para la plataforma .NET. Se trata de un sencillo mapeador de objetos que permite asignar un modelo de dominio orientado a objetos a una base de datos relacional tradicional. Dapper es conocido por su velocidad y rendimiento, y a menudo se le conoce como el "Rey de los Micro ORM". Iguala la velocidad de un lector de datos ADO.NET en bruto y mejora la interfaz IDbConnection con útiles métodos de extensión para consultar bases de datos SQL.

Características principales de Dapper

  1. Rendimiento: Dapper es conocido por su excelente rendimiento gracias a su diseño ligero y su eficiente mapeo de objetos.

  2. Simplicidad: La API de Dapper es minimalista e intuitiva, lo que facilita a los desarrolladores su comprensión y uso eficaz.

  3. Soporte de SQL sin procesar: Dapper permite a los desarrolladores escribir consultas SQL sin procesar, proporcionando un control total sobre las interacciones con la base de datos.

  4. Asignación de objetos: Dapper asigna los resultados de las consultas directamente a objetos C#, lo que reduce el código repetitivo y mejora la legibilidad del código.

  5. Consultas parametrizadas: Dapper soporta consultas parametrizadas, protegiendo contra ataques de inyección SQL y mejorando el rendimiento.

  6. Mapeo múltiple: Dapper maneja a la perfección relaciones de uno a muchos y de muchos a muchos, lo que permite ejecutar múltiples consultas de forma eficiente, simplificando así la recuperación de datos complejos.

Acceso asíncrono a datos con Dapper

Dapper ofrece métodos de extensión asíncronos que reflejan sus homólogos síncronos, lo que permite a los desarrolladores ejecutar consultas de bases de datos de forma asíncrona. Estos métodos asíncronos son ideales para operaciones de E/S, como las consultas a bases de datos, en las que el subproceso principal puede seguir ejecutando otras tareas mientras espera a que se complete la operación de la base de datos.

Métodos asíncronos clave en Dapper

  1. QueryAsync: Ejecuta una consulta SQL de forma asíncrona y devuelve el resultado como una secuencia de objetos dinámicos u objetos fuertemente tipados.

  2. QueryFirstOrDefaultAsync: Ejecuta una consulta SQL de forma asíncrona y devuelve el primer resultado o un valor predeterminado si no se encuentra ningún resultado.

  3. ExecuteAsync: Ejecuta un comando SQL de forma asíncrona(por ejemplo, INSERT, UPDATE, DELETE) y devuelve el número de filas afectadas.

    Configuración del entorno: Antes de sumergirte en los ejemplos de código, asegúrate de tener instaladas las herramientas necesarias:

  4. Visual Studio o Visual Studio Code.

  5. .NET SDK.

  6. Paquete SQLite para .NET.

    Para instalar el paquete SQLite, ejecute el siguiente comando en el directorio de su proyecto:

dotnet add package Microsoft.Data.Sqlite

Creación de una base de datos SQLite: Para fines de demostración, vamos a crear un archivo de base de datos SQLite simple llamado "ejemplo.db" con una tabla "Usuarios" que contiene columnas para "Id," "Nombre," y "Email."

CREATE TABLE Users (
    Id INTEGER PRIMARY KEY,
    Name TEXT,
    Email TEXT
);
CREATE TABLE Users (
    Id INTEGER PRIMARY KEY,
    Name TEXT,
    Email TEXT
);
CREATE TABLE Users(Id [INTEGER] PRIMARY KEY, Name TEXT, Email TEXT)
VB   C#

Utilización de Dapper con SQLite

  1. En primer lugar, asegúrese de que ha importado los espacios de nombres necesarios:
using Microsoft.Data.Sqlite;
using Dapper;
using Microsoft.Data.Sqlite;
using Dapper;
Imports Microsoft.Data.Sqlite
Imports Dapper
VB   C#
  1. Establecer una conexión con la base de datos 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
    }
    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
VB   C#
  1. Ejecutar una consulta con 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 or default value
    string query = "SELECT * FROM Users"; // var sql queries
    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 int Id { get; set; }
        public string Name { get; set; }
        public string Email { get; set; }
    }
    // Query to select all users or default value
    string query = "SELECT * FROM Users"; // var sql queries
    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}");
    }
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#
  1. Insertar datos en la base de datos utilizando Dapper:
    // Define a new user 
    var newUser = new User { Name = "John Doe", Email = "john@example.com" };
    // user generated 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 
    var newUser = new User { Name = "John Doe", Email = "john@example.com" };
    // user generated 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);
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Presentación de IronPDF

IronPDF es una biblioteca C# deIron Software que permite a los desarrolladores crear, editar y manipular documentos PDF mediante programación dentro de aplicaciones .NET. Ofrece funciones como generar documentos PDF a partir de HTML, imágenes y otros formatos, así como añadir texto, imágenes y diversos elementos a archivos PDF existentes. IronPDF pretende simplificar las tareas de generación y manipulación de PDF para desarrolladores .NET proporcionando un completo conjunto de herramientas y API.

IronPDF ofrece una serie de funciones para la generación y manipulación de PDF dentro de aplicaciones .NET:

  1. Conversión de HTML a PDF: Convierte contenido HTML, incluidos estilos CSS, en documentos PDF.

  2. Conversión de imágenes a PDF: Convierte imágenes(como JPEG, PNG, BMP) a documentos PDF.

  3. Conversión de texto a PDF: Convierte texto sin formato o con formato(RTF) a documentos PDF.

  4. Generación de PDF: Cree documentos PDF desde cero mediante programación.

  5. Edición de PDF: Edite documentos PDF existentes añadiendo o modificando texto, imágenes y otros elementos.

  6. Fusión y división de PDF: Combine varios documentos PDF en un único documento o divida un documento PDF en varios archivos.

  7. Seguridad PDF: Aplique protección por contraseña y cifrado a los documentos PDF para restringir el acceso y proteger la información confidencial.

  8. Relleno de formularios PDF: Rellene formularios PDF con datos mediante programación.

  9. Impresión PDF: Imprima documentos PDF directamente desde su aplicación .NET.

  10. Ajustes de conversión de PDF: Personalice varios ajustes como el tamaño de página, la orientación, los márgenes, la compresión y mucho más durante la generación de PDF.

  11. Extracción de texto PDF: Extraiga contenido de texto de documentos PDF para su posterior procesamiento o análisis.

  12. Metadatos PDF: Establecer metadatos(autor, título, tema, palabras clave) para documentos PDF.

Generación de documentos PDF con IronPDF y Dapper

Crear una aplicación de consola en Visual Studio

Dapper C#(Cómo funciona para desarrolladores): Figura 1 - Creación de una aplicación de consola en Visual Studio

Indique el nombre y la ubicación del proyecto

Dapper C#(Cómo funciona para los desarrolladores): Figura 2 - Nombrar el proyecto

Seleccione la versión .NET

Dapper C#(Cómo funciona para desarrolladores): Figura 3 - Seleccione la versión .NET deseada

Instale los siguientes paquetes desde el gestor de paquetes de Visual Studio o desde la consola

dotnet add package Microsoft.Data.Sqlite

Dapper C#(Cómo funciona para desarrolladores): Figura 4 - Instalación de Microsoft Data Sqlite desde el gestor de paquetes de Visual Studio

dotnet add package Dapper --version 2.1.35

Dapper C#(Cómo funciona para desarrolladores): Figura 5 - Instalación de Dapper desde el gestor de paquetes de Visual Studio

dotnet add package IronPdf --version 2024.4.2
dotnet add package IronPdf --version 2024.4.2
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'dotnet add package IronPdf --version 2024.4.2
VB   C#

Dapper C#(Cómo funciona para desarrolladores): Figura 6 - Instalación de IronPDF desde el gestor de paquetes de Visual Studio

Utilice el siguiente código para generar un documento PDF

using Dapper;
using IronPdf;
using Microsoft.Data.Sqlite;
string connectionString = "Data Source=ironPdf.db"; // sql server database connection string
var content = "<h1>Demonstrate IronPDF with Dapper</h1>";
content += "<h2>Create a new database using Microsoft.Data.Sqlite</h2>";
content += "<p>new SqliteConnection(connectionString) and connection.Open()</p>";
using (var connection = new SqliteConnection(connectionString))
{
    connection.Open();
    content += "<h2>Create a Users Table using dapper and insert sql query</h2>";
    content += "<p>CREATE TABLE IF NOT EXISTS Users</p>";
    // create table
    string sql = "CREATE TABLE IF NOT EXISTS Users (\n    Id INTEGER PRIMARY KEY,\n    Name TEXT,\n    Email TEXT\n);";
    connection.Execute(sql);
    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" });
    content += "<h2>Get Users From table using Dapper</h2>";
    // Query to select all users or default value
    string query = "SELECT * FROM Users"; // var sql queries
    var users = connection.Query<User>(query).ToList();
    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 Renderer
    var renderer = new ChromePdfRenderer();
    // Create a PDF from HTML string
    var pdf = renderer.RenderHtmlAsPdf(content);
    // Save to a file or Stream
    pdf.SaveAs("dapper.pdf");
}
string AddUser(SqliteConnection sqliteConnection, User user)
{
    // user generated SQL query/stored procedure to insert a new user
    string insertQuery = "INSERT INTO Users (Name, Email) VALUES (@Name, @Email)";
    // Execute the query
    sqliteConnection.Execute(insertQuery, user);
    return $"<p>Name:{user.Name}, email: {user.Email}</p>"; 
}
using Dapper;
using IronPdf;
using Microsoft.Data.Sqlite;
string connectionString = "Data Source=ironPdf.db"; // sql server database connection string
var content = "<h1>Demonstrate IronPDF with Dapper</h1>";
content += "<h2>Create a new database using Microsoft.Data.Sqlite</h2>";
content += "<p>new SqliteConnection(connectionString) and connection.Open()</p>";
using (var connection = new SqliteConnection(connectionString))
{
    connection.Open();
    content += "<h2>Create a Users Table using dapper and insert sql query</h2>";
    content += "<p>CREATE TABLE IF NOT EXISTS Users</p>";
    // create table
    string sql = "CREATE TABLE IF NOT EXISTS Users (\n    Id INTEGER PRIMARY KEY,\n    Name TEXT,\n    Email TEXT\n);";
    connection.Execute(sql);
    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" });
    content += "<h2>Get Users From table using Dapper</h2>";
    // Query to select all users or default value
    string query = "SELECT * FROM Users"; // var sql queries
    var users = connection.Query<User>(query).ToList();
    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 Renderer
    var renderer = new ChromePdfRenderer();
    // Create a PDF from HTML string
    var pdf = renderer.RenderHtmlAsPdf(content);
    // Save to a file or Stream
    pdf.SaveAs("dapper.pdf");
}
string AddUser(SqliteConnection sqliteConnection, User user)
{
    // user generated SQL query/stored procedure to insert a new user
    string insertQuery = "INSERT INTO Users (Name, Email) VALUES (@Name, @Email)";
    // Execute the query
    sqliteConnection.Execute(insertQuery, user);
    return $"<p>Name:{user.Name}, email: {user.Email}</p>"; 
}
Imports Microsoft.VisualBasic
Imports Dapper
Imports IronPdf
Imports Microsoft.Data.Sqlite
Private connectionString As String = "Data Source=ironPdf.db" ' sql server database connection string
Private content = "<h1>Demonstrate IronPDF with Dapper</h1>"
Private content &= "<h2>Create a new database using Microsoft.Data.Sqlite</h2>"
Private content &= "<p>new SqliteConnection(connectionString) and connection.Open()</p>"
Using connection = New SqliteConnection(connectionString)
	connection.Open()
	content &= "<h2>Create a Users Table using dapper and insert sql query</h2>"
	content &= "<p>CREATE TABLE IF NOT EXISTS Users</p>"
	' create table
	Dim sql As String = "CREATE TABLE IF NOT EXISTS Users (" & vbLf & "    Id INTEGER PRIMARY KEY," & vbLf & "    Name TEXT," & vbLf & "    Email TEXT" & vbLf & ");"
	connection.Execute(sql)
	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"
	})
	content &= "<h2>Get Users From table using Dapper</h2>"
	' Query to select all users or default value
	Dim query As String = "SELECT * FROM Users" ' var sql queries
	Dim users = connection.Query(Of User)(query).ToList()
	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 user
	' create Renderer
	Dim renderer = New ChromePdfRenderer()
	' Create a PDF from HTML string
	Dim pdf = renderer.RenderHtmlAsPdf(content)
	' Save to a file or Stream
	pdf.SaveAs("dapper.pdf")
End Using
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'string AddUser(SqliteConnection sqliteConnection, User user)
'{
'	' user generated SQL query/stored procedure to insert a new user
'	string insertQuery = "INSERT INTO Users (Name, Email) VALUES (@Name, @Email)";
'	' Execute the query
'	sqliteConnection.Execute(insertQuery, user);
'	Return string.Format("<p>Name:{0}, email: {1}</p>", user.Name, user.Email);
'}
VB   C#

Código Explicación

  1. Comience por crear un soporte de contenido de cadena para la generación de PDF

  2. Crear una nueva base de datos utilizando Microsoft.Data.Sqlite, connection.Open() creará una base de datos vacía

  3. Crear una Tabla de Usuarios usando Dapper e insertar una consulta SQL

  4. Añadir usuarios a la tabla utilizando Dapper con consultas de inserción

  5. Consulta para seleccionar todos los usuarios o el valor por defecto

  6. Guardar el contenido generado como PDF utilizando los métodos ChromePdfRenderer y SaveAs

Salida

Dapper C#(Cómo funciona para desarrolladores): Figura 7 - Ejemplo de salida PDF utilizando todos los paquetes instalados anteriormente

Licencia (prueba disponible para IronPDF)

IronPDFinformación sobre licencias está disponible para garantizar la conformidad y el uso dentro de su proyecto.

Se puede obtener una licencia de prueba para desarrolladores a través de la página webPágina de licencia de prueba de IronPDF.

Por favor, sustituya la clave en el archivo appSettings.json que se muestra a continuación

{
  "IronPdf.License.LicenseKey" : "The Key Goes Here"
}
{
  "IronPdf.License.LicenseKey" : "The Key Goes Here"
}
If True Then
  "IronPdf.License.LicenseKey" : "The Key Goes Here"
End If
VB   C#

Conclusión

Dapper simplifica el acceso a los datos en las aplicaciones .NET y, combinado con SQLite, proporciona una solución ligera y eficaz para gestionar bases de datos. Siguiendo los pasos descritos en este artículo, puede aprovechar Dapper para interactuar con bases de datos SQLite sin problemas, lo que le permite crear aplicaciones robustas y escalables con facilidad. Junto con IronPDF, los desarrolladores pueden adquirir conocimientos relacionados con bases de datos ORM como Dapper y bibliotecas de generación de PDF como IronPDF.

< ANTERIOR
C# Pair Class (Cómo funciona para los desarrolladores)
SIGUIENTE >
Nswag C# (Cómo funciona para desarrolladores)

¿Listo para empezar? Versión: 2024.12 acaba de salir

Descarga gratuita de NuGet Descargas totales: 11,622,374 Ver licencias >