在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
在現代軟體開發中,有效地訪問資料庫對於應用程式的性能和可擴展性至關重要。 Dapper輕量級物件關聯映射器 (ORM) 對於 .NET,提供了一種簡化的數據庫互動方式。在這篇文章中,我們將探索如何使用 Dapper C 和 SQLite 數據庫文件,並通過代碼示例演示其簡單性和有效性。此外,我將介紹一個叫做 IronPDF 的非凡的 PDF 生成庫。 IronPDF 從 Iron Software.
Dapper 是一種物件關聯映射 (ORM) 框架適用於 .NET 平台。這是一個簡單的對象映射器,允許您將面向對象的域模型映射到傳統的關係數據庫。Dapper 以其速度和性能而聞名,常被稱為“微型 ORM 之王”。它匹配了原始 ADO.NET 數據讀取器的速度,並使用有用的擴展方法增強了 IDbConnection 接口以查詢 SQL 數據庫。
性能: Dapper以其輕量化設計和高效的對象映射而聞名,性能卓越。
簡單性: Dapper的API設計簡潔直觀,開發者能夠輕鬆掌握並有效使用。
支持原生SQL: Dapper允許開發者編寫原生SQL查詢,提供對數據庫交互的完全控制。
對象映射: Dapper直接將查詢結果映射到C#對象,減少了樣板代碼,提升了代碼的可讀性。
參數化查詢: Dapper支持參數化查詢,能夠防範SQL注入攻擊並提高性能。
Dapper 提供了和其同步方法相對應的非同步延伸方法,使開發人員能夠非同步執行資料庫查詢。這些非同步方法特別適用於 I/O 綁定操作,例如資料庫查詢,讓主線程在等待資料庫操作完成的同時可以繼續執行其他任務。
QueryAsync
:非同步執行 SQL 查詢並將結果返回為動態對象或強類型對象的序列。
QueryFirstOrDefaultAsync
:非同步執行 SQL 查詢並返回第一個結果,或者如果未找到結果則返回默認值。
ExecuteAsync
:非同步執行 SQL 命令 (例如,插入,更新,刪除) 並返回受影響的行數。環境設置:在開始代碼示例之前,確保您已經安裝了必要的工具:
Visual Studio 或 Visual Studio Code。
.NET SDK。
要安裝 SQLite 套件,請在您的項目目錄中執行以下命令:
dotnet add package Microsoft.Data.Sqlite
建立 SQLite 資料庫:為了展示目的,讓我們建立一個名為 "example.db" 的簡單 SQLite 資料庫文件,包含一個 "Users" 表,該表包含 "Id"、"Name" 和 "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)
using Microsoft.Data.Sqlite;
using Dapper;
using Microsoft.Data.Sqlite;
using Dapper;
Imports Microsoft.Data.Sqlite
Imports Dapper
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
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
// 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
// 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
IronPDF 是一個來自的C#庫 Iron Software 使開發人員能夠在 .NET 應用程式中程式化地創建、編輯和操作 PDF 文件。它提供了從 HTML、圖像和其他格式生成 PDF 文件的功能,以及向現有 PDF 文件添加文本、圖像和各種元素的功能。IronPDF 旨在通過提供全面的工具和 API,簡化 .NET 開發人員的 PDF 生成和操作任務。
IronPDF 為 .NET 應用程序中的 PDF 生成和操作提供了豐富的功能:
HTML 到 PDF 轉換:將 HTML 內容(包括 CSS 樣式)轉換為 PDF 文件。
圖像到 PDF 轉換:將圖像轉換為 PDF 文件。 (例如 JPEG、PNG、BMP) 為 PDF 文件。
文字轉 PDF 轉換:將純文字或格式化文字轉換 (RTF) 到 PDF 文件。
PDF 生成:以程式設計的方式從零創建 PDF 文件。
PDF 編輯:透過新增或修改文本、圖片和其他元素來編輯現有的 PDF 文件。
PDF 合併和拆分:將多個 PDF 文件合併為一個文件,或將一個 PDF 文件拆分為多個文件。
PDF 安全性:對 PDF 文件進行密碼保護和加密,以限制訪問並保護敏感資訊。
PDF 表單填寫:以程式設計的方式填寫 PDF 表單中的數據。
PDF 列印:直接從您的 .NET 應用程式打印 PDF 文件。
PDF 轉換設置:在生成 PDF 時,自定義多種設置,例如頁面大小、方向、邊距、壓縮等。
PDF 文本抽取:從 PDF 文件中提取文本內容以供進一步處理或分析。
在 Visual Studio 中創建一個控制台應用程式
提供專案名稱和位置
選擇 .NET 版本
從 Visual Studio 套件管理器或控制台安裝以下套件
dotnet add package Microsoft.Data.Sqlite
dotnet add package Dapper --version 2.1.35
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
使用以下代碼生成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);
'}
開始建立一個字串作為PDF生成的內容存儲
使用 Microsoft.Data.Sqlite
創建一個新的資料庫,connection.Open
()`將創建一個空的數據庫
使用 Dapper 創建一個 Users 表並插入 SQL 查詢
使用 Dapper 和插入查詢將用戶添加到表中
查詢以選擇所有用戶或默認值
ChromePdfRenderer
和 SaveAs
方法將生成的內容保存為 PDFIronPDF開發人員可以獲得試用許可證 這裡請替換下方 appSettings.json 文件中的 Key
{
"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
Dapper 簡化了 .NET 應用程式中的資料存取,並且結合 SQLite 時,提供了一個輕量且有效的資料庫管理解決方案。透過本文中所述的步驟,您可以利用 Dapper 無縫地與 SQLite 資料庫互動,讓您可以輕鬆構建健全且可擴展的應用程式。與此同時,透過使用 IronPDF,開發人員可以習得與 ORM 資料庫如 Dapper 和 PDF 生成庫如 IronPDF 相關的技能。