C#怎么使用Dapper C# Dapper ORM连接数据库方法
发布时间 - 2026-01-29 00:00:00 点击率:次Dapper 是基于 ADO.NET 的轻量级高性能 .NET ORM,仅作极简封装,支持参数化查询与执行,不生成 SQL、不管理实体生命周期;需手动引用数据库驱动,通过 IDbConnection 扩展方法操作,强调控制力与性能。
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("SELECT * FROM Users WHERE Age > @age", new { age = 18 }); - 插入数据:
int rows = conn.Execute("INSERT INTO Users (Name, Age) VALUES (@name, @age)", new { name = "张三", age = 25 }); - 参数一律用
@参数名占位符,Dapper 自动处理参数化防止 SQL 注入
常用操作速查
QueryIEnumerable)
QuerySingle
QueryFirstOrDefault
Execute():执行 INSERT/UPDATE/DELETE,返回影响行数
QueryMultiple():一次执行多个 SQL(用

GridReader,适合关联查询减少往返
- 例如联合查用户和订单:
var multi = conn.QueryMultiple("SELECT * FROM Users; SELECT * FROM Orders"); var users = multi.Read(); var orders = multi.Read (); - 注意:
GridReader必须按顺序读取,且不能跳过某一部分
小贴士与避坑提醒
Dapper 不自动映射字段大小写,数据库列名需与 C# 属性名**完全匹配**(默认区分大小写),常见解决方式:
- 用 SQL 别名:
SELECT Id AS ID, UserName AS Name FROM Users - 配置全局映射规则(需自定义
IDbConnection扩展或使用第三方适配器如 Dapper.FluentMap) - 确保实体属性是 public get/set,私有字段不会被映射
- 异步方法存在(如
QueryAsync、ExecuteAsync),推荐 Web/API 场景使用 - 别把 Dapper 当全自动 ORM —— 它不跟踪变更、不缓存、不建表,SQL 和事务逻辑仍需你把控
基本上就这些。Dapper 的核心就是“连接 + SQL 字符串 + 参数对象”,没有魔法,但足够快、足够稳。
# mysql
# app
# 懒加载
# microsoft
# c#
# .net
# sql
# NULL
# 封装
# select
# 字符串
# int
# 接口
# using
# public
# var
# delete
# 对象
# 异步
# visual studio
# database
# postgresql
# 数据库
# 它不
# 高性能
# 是一个
# 是在
# 多个
# 右键
# 自定义
# 不支持
# 为例
# 挂在
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程
laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法
INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】
怎么用AI帮你为初创公司进行市场定位分析?
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
详解jQuery停止动画——stop()方法的使用
Swift中swift中的switch 语句
Laravel怎么使用Intervention Image库处理图片上传和缩放
潮流网站制作头像软件下载,适合母子的网名有哪些?
如何在企业微信快速生成手机电脑官网?
Laravel如何处理和验证JSON类型的数据库字段
Laravel如何实现密码重置功能_Laravel密码找回与重置流程
HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】
PHP 500报错的快速解决方法
Laravel如何实现用户注册和登录?(Auth脚手架指南)
简历在线制作网站免费版,如何创建个人简历?
php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】
为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】
Laravel如何保护应用免受CSRF攻击?(原理和示例)
Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】
Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转
高性能网站服务器部署指南:稳定运行与安全配置优化方案
Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】
网站制作价目表怎么做,珍爱网婚介费用多少?
Laravel如何实现数据库事务?(DB Facade示例)
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
如何快速使用云服务器搭建个人网站?
如何在万网自助建站中设置域名及备案?
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解
高防服务器租用指南:配置选择与快速部署攻略
Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】
如何制作一个表白网站视频,关于勇敢表白的小标题?
Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】
清除minerd进程的简单方法
深入理解Android中的xmlns:tools属性
Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧
Python数据仓库与ETL构建实战_Airflow调度流程详解
Windows10如何更改计算机工作组_Win10系统属性修改Workgroup
作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】
Win11怎么开启自动HDR画质_Windows11显示设置HDR选项
Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置
Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】
5种Android数据存储方式汇总
如何在服务器上配置二级域名建站?
JavaScript如何实现音频处理_Web Audio API如何工作?
JavaScript如何实现倒计时_时间函数如何精确控制

