一、什麼是 Dapper
Dapper 是 .NET 微型ORM(Micro ORM),有著Micro ORM之王的美稱,效能接近原生 ADO.NET。
ORM:物件關聯對應器,實現資料庫表 ↔ C# 實體物件自動對應。
核心特色:
- 不會封裝 SQL,由開發者自行撰寫 SQL;
- 透過擴充方法擴充
IDbConnection(所有資料庫連線物件都可直接使用); - 體積輕巧、效能極佳。
討論:嚴格來說它屬於微型ORM,和 EF Core 這類完整ORM框架有所區別,社群一直有「是否算純ORM」的討論。
防 SQL 注入:使用參數化查詢可避免注入;拼接 SQL 仍然存在風險。
執行流程三個步驟:建立資料庫連線 → 撰寫 SQL 陳述式 → 呼叫 Dapper 擴充方法執行 SQL 並傳入參數。
特色
- 高效能、查詢速度快
- 支援靜態實體、動態物件對應
- 可自由控制SQL陳述式
- 支援多結果集查詢
- 原生支援預存程序
- 基於
IDbConnection介面,相容各種資料庫驅動 - 支援批次插入(擴充功能,原生僅簡易批次,大量資料建議使用 Dapper.Plus)
安裝
方式1:NuGet 套件管理員主控台(PMC)
Install-Package Dapper
方式2:.NET CLI(建議用於 .NET Core/.NET5+)
dotnet add package Dapper
方式3:Visual Studio 圖形介面
方案總管 → 右鍵專案 → 管理NuGet套件,搜尋 Dapper 進行安裝。
重要提醒:Dapper 本身不包含資料庫驅動!
使用SQL Server需要額外安裝Microsoft.Data.SqlClient;MySQL則需安裝MySqlConnector。
範例
using Dapper;
using Microsoft.Data.SqlClient;
// 1. 建立IDbConnection
string connStr = "你的資料庫連線字串";
using var conn = new SqlConnection(connStr);
// 2. 撰寫SQL
string sql = "SELECT * FROM Article WHERE Id = @Id";
// 3. 執行查詢並自動對應實體
var article = conn.QueryFirstOrDefault<Article>(sql, new { Id = 1 });
public class Article
{
public int Id { get; set; }
public string Title { get; set; }
}Code language: JavaScript (javascript)
比較
| 框架 | 類型 | SQL控制 | 適用場景 |
|---|---|---|---|
| Dapper | Micro ORM | 手動撰寫SQL | 高效能需求、複雜查詢、舊專案改寫 |
| EF Core | Full ORM | 自動產生SQL,也支援原生SQL | 快速開發、簡單業務,不想手寫SQL |
介紹與安裝
Next: 第一個範例