C#怎么使用Dapper C# Dapper ORM连接数据库方法

来源:这里教程网 时间:2026-02-21 17:40:05 作者:

Dapper 是一个轻量级、高性能的 .NET ORM(对象关系映射)库,它不替代 ADO.NET,而是在其基础上做了极简封装,通过扩展方法直接操作

IDbConnection
。它不生成 SQL、不管理实体生命周期、不支持懒加载,但执行快、学习成本低、控制力强。

安装 Dapper 包

在项目中通过 NuGet 安装:

Visual Studio:右键项目 → “管理 NuGet 包” → 搜索 Dapper → 安装 命令行(.NET CLI):
dotnet add package Dapper
注意:Dapper 本身只依赖
System.Data.Common
,无需额外数据库驱动包 —— 但你得自己引用对应数据库的 ADO.NET 驱动,比如
Microsoft.Data.SqlClient
(SQL Server)、
Npgsql
(PostgreSQL)或
MySqlConnector
(MySQL)

基础连接与查询(以 SQL Server 为例)

你需要一个打开的数据库连接(

IDbConnection
),Dapper 的所有扩展方法都挂在这个接口上:

创建连接字符串(例如 SQL Server):
"Server=localhost;Database=TestDB;Trusted_Connection=true;"
using
确保连接释放:
using var conn = new SqlConnection(connectionString);
执行查询:
var users = conn.Query<user>("SELECT * FROM Users WHERE Age > @age", new { age = 18 });</user>
插入数据:
int rows = conn.Execute("INSERT INTO Users (Name, Age) VALUES (@name, @age)", new { name = "张三", age = 25 });
参数一律用
@参数名
占位符,Dapper 自动处理参数化防止 SQL 注入

常用操作速查

Query():返回多条记录(如

IEnumerable<t></t>

QuerySingle():必须返回且仅返回 1 条,否则抛异常
QueryFirstOrDefault():返回第一条或 null(推荐用于可能无结果的场景)
Execute():执行 INSERT/UPDATE/DELETE,返回影响行数
QueryMultiple():一次执行多个 SQL(用分号分隔),返回
GridReader
,适合关联查询减少往返

例如联合查用户和订单:
var multi = conn.QueryMultiple("SELECT * FROM Users; SELECT * FROM Orders"); var users = multi.Read<user>(); var orders = multi.Read<order>();</order></user>
注意:
GridReader
必须按顺序读取,且不能跳过某一部分

小贴士与避坑提醒

Dapper 不自动映射字段大小写,数据库列名需与 C# 属性名**完全匹配**(默认区分大小写),常见解决方式:

用 SQL 别名:
SELECT Id AS ID, UserName AS Name FROM Users
配置全局映射规则(需自定义
IDbConnection
扩展或使用第三方适配器如 Dapper.FluentMap)
确保实体属性是 public get/set,私有字段不会被映射 异步方法存在(如
QueryAsync<t></t>
ExecuteAsync
),推荐 Web/API 场景使用
别把 Dapper 当全自动 ORM —— 它不跟踪变更、不缓存、不建表,SQL 和事务逻辑仍需你把控

基本上就这些。Dapper 的核心就是“连接 + SQL 字符串 + 参数对象”,没有魔法,但足够快、足够稳。

相关推荐