Dapper 连接 MySQL 需安装 Dapper 和 MySql.Data 两个 NuGet 包,配置正确连接字符串(如 Server=localhost;Port=3306;Database=mydb;User ID=root;Password=123456;SslMode=None;Allow User Variables=true),并通过 MySqlConnection 实例调用 Dapper 的 Query、Execute 等扩展方法。

Dapper 本身不直接处理数据库连接,它依赖 ADO.NET 提供的数据库驱动。要让 Dapper 连上 MySQL,关键其实是配置好 MySql.Data 驱动 + 正确的连接字符串 + 标准的 IDbConnection 使用方式。下面几步走完,基本就通了。
装对两个 NuGet 包
缺一不可:
- Dapper:轻量级 ORM 扩展库,提供 Query、Execute 等便捷方法
- MySql.Data:Oracle 官方提供的 .NET MySQL 驱动(推荐用 8.0.x 或 8.3.x,兼容 .NET 6/7/8/9)
安装方式任选其一:
• 在包管理控制台运行:
Install-Package Dapper
Install-Package MySql.Data
• 或在 .csproj 中手动添加引用:
写好 MySQL 连接字符串
推荐放在 appsettings.json 里,方便管理与切换环境:
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;Port=3306;Database=mydb;User ID=root;Password=123456;SslMode=None;Allow User Variables=true;"
}注意几个实用细节:
- Port 显式写上更稳妥(默认 3306),尤其部署到 Docker 或远程服务器时
- SslMode=None 是本地开发常用设置;生产环境如需 SSL,设为 Required 并配证书
- Allow User Variables=true 可避免某些含 @ 变量的 SQL 报错(比如存储过程或动态查询)
- 密码含特殊字符?建议 URL 编码,或改用
MySqlConnectionStringBuilder构造
用 MySqlConnection 套 Dapper 方法
核心就是:创建 MySqlConnection 实例 → 打开 → 丢给 Dapper 的扩展方法用。不需要额外封装也能跑起来:
string connStr = Configuration.GetConnectionString("DefaultConnection");
using var conn = new MySqlConnection(connStr);
conn.Open();
var users = conn.Query("SELECT * FROM Users WHERE Age > @age", new { age = 18 }); 常见写法提示:
- 用
using自动释放连接,别忘了Open()(Dapper 不会帮你开) - 参数统一用
@xxx占位符,Dapper 会自动映射匿名对象或实体属性 - 如果执行增删改,用
Execute();查单个用QuerySingle()或QueryFirstOrDefault()
可选:加一层基础仓储封装
项目稍大时,建议把连接逻辑抽成基类,避免每个 Repository 都重复 new MySqlConnection:
public class BaseRepository
{
protected readonly string _connStr;
public BaseRepository(IConfiguration config) => _connStr = config.GetConnectionString("DefaultConnection");
protected IDbConnection CreateConnection() => new MySqlConnection(_connStr);
}
子类直接调用 CreateConnection(),再传给 Dapper,干净又可控。
不复杂但容易忽略:驱动版本匹配、连接字符串权限、防火墙端口、MySQL 用户 host 设置(比如 root@localhost ≠ root@%)。连不上先查这四点。










