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 使用方式。下面几步走完,基本就通了。
缺一不可:
安装方式任选其一:
• 在包管理控制台运行:
Install-Package Dapper
Install-Package MySql.Data
• 或在 .csproj 中手动添加引用:
推荐放在 appsettings.json 里,方便管理与切换环境:
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;Port=3306;Database=mydb;User ID=root;Password=123456;SslMode=None;Allow User Variables=true;"
}注意几个实用细节:
MySqlConnectionStringBuilder 构造核心就是:创建 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@%)。连不上先查这四点。