当前位置: 欣欣网 > 码农

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 的基本用法是如何简洁和强大的。