當前位置: 妍妍網 > 碼農

Dapper - 微型 ORM 之王 (C#.NET)

2024-02-24碼農

Dapper 是一個輕量級的物件關系對映器(ORM),專為.NET 平台設計。它使用簡單的 API,允許開發者以流暢、簡潔的方式操作資料庫,同時保持對 SQL 語句的直接控制。Dapper 是 Stack Overflow 團隊開發的一個開源計畫,以其高效能和易用性而受到廣大開發者的喜愛。

Dapper 的主要特點

  1. 輕量級 :Dapper 是一個非常輕量級的庫,對效能的影響非常小。

  2. 直接 SQL :Dapper 鼓勵直接寫 SQL,而不是使用抽象查詢語法,這使得開發者能夠充分利用資料庫的能力。

  3. 動態對映 :Dapper 支持動態地對映查詢結果到物件,無需事先定義物件結構。

  4. 異步支持 :Dapper 提供異步方法,支持異步資料庫操作。

  5. 簡單 API :Dapper 的 API 非常簡潔,易於學習和使用。

Dapper 的基本用法

首先,你需要在計畫中安裝 Dapper。透過 NuGet 包管理器,可以輕松添加 Dapper 到你的計畫中:

Install-Package Dapper

範例程式碼

假設我們有一個簡單的 User 類和一個資料庫表 Users

public classUser
{
publicint Id { getset; }
publicstring Name { getset; }
publicstring Email { getset; }
}

以下是如何使用 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 的基本用法是如何簡潔和強大的。