Dapper 是一個輕量級的物件關系對映器(ORM),專為.NET 平台設計。它使用簡單的 API,允許開發者以流暢、簡潔的方式操作資料庫,同時保持對 SQL 語句的直接控制。Dapper 是 Stack Overflow 團隊開發的一個開源計畫,以其高效能和易用性而受到廣大開發者的喜愛。
Dapper 的主要特點
輕量級 :Dapper 是一個非常輕量級的庫,對效能的影響非常小。
直接 SQL :Dapper 鼓勵直接寫 SQL,而不是使用抽象查詢語法,這使得開發者能夠充分利用資料庫的能力。
動態對映 :Dapper 支持動態地對映查詢結果到物件,無需事先定義物件結構。
異步支持 :Dapper 提供異步方法,支持異步資料庫操作。
簡單 API :Dapper 的 API 非常簡潔,易於學習和使用。
Dapper 的基本用法
首先,你需要在計畫中安裝 Dapper。透過 NuGet 包管理器,可以輕松添加 Dapper 到你的計畫中:
Install-Package Dapper
範例程式碼
假設我們有一個簡單的
User
類和一個資料庫表
Users
:
public classUser
{
publicint Id { get; set; }
publicstring Name { get; set; }
publicstring Email { get; set; }
}
以下是如何使用 Dapper 執行查詢、插入、更新和刪除操作的範例程式碼:
查詢
using System.Data.SqlClient;
using Dapper;
string connectionString = "YourConnectionStringHere";
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
// 查詢單條記錄
var user = connection.QueryFirstOrDefault<User>("SELECT * FROM Users WHERE Id = @Id", new { Id = 1 });
// 查詢多條記錄
var users = connection.Query<User>("SELECT * FROM Users WHERE Email LIKE @Email", new { Email = "%@example.com" });
// 動態型別查詢
var dynamicUsers = connection.Query("SELECT * FROM Users WHERE Email LIKE @Email", new { Email = "%@example.com" }).ToList();
}
插入
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
var newUserId = connection.Execute(
"INSERT INTO Users (Name, Email) VALUES (@Name, @Email); SELECT CAST(SCOPE_IDENTITY() AS INT)",
new { Name = "NewUser", Email = "[email protected]" }
);
}
更新
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
var updatedRows = connection.Execute(
"UPDATE Users SET Name = @Name WHERE Id = @Id",
new { Name = "UpdatedUser", Id = 1 }
);
}
刪除
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
var deletedRows = connection.Execute(
"DELETE FROM Users WHERE Id = @Id",
new { Id = 1 }
);
}
總結
Dapper 是一個高效能且簡單易用的微型 ORM,它允許開發者在保持對 SQL 語句的直接控制的同時,享受 ORM 帶來的便利。它避免了過度抽象,提供了直接、高效的資料庫操作方法,非常適合那些重視效能和靈活性的計畫。透過上面的範例程式碼,我們可以看到 Dapper 的基本用法是如何簡潔和強大的。