EF Core怎么连接MySQL数据库 EF Core连接MySQL方法
发布时间 - 2025-12-31 00:00:00 点击率:次EF Core 连接 MySQL 数据库核心三步:安装 Pomelo 驱动及 EF 设计工具包、配置含 utf8mb4 和显式端口的连接字符串、注册 DbContext 并启用自动版本检测。
EF Core 连接 MySQL 数据库,核心就三步:装对驱动、配好连接字符串、注册 DbContext。用 Pomelo 提供程序是当前最主流、兼容性最好、文档最全的选择(官方 MySQL EF 包已基本停止维护)。
安装 Pomelo 驱动和基础包
在项目中执行以下命令(.NET 6/7/8/9 均适用):
- dotnet add package Pomelo.EntityFrameworkCore.MySql —— 必装,MySQL 的 EF Core 提供程序
-
dotnet add package Microsoft.EntityFrameworkCore.Design —— 支持迁移命令(
dotnet ef) - dotnet add package Microsoft.EntityFrameworkCore.Tools —— 设计时工具(VS 中的包管理器控制台也依赖它)
不需要再装 MySql.Data 或 MySql.Data.EntityFrameworkCore,Pomelo 已内置完整实现,且更活跃、适配新版 MySQL(如 8.0+ 的 caching_sha2_password 认证)。
配置连接字符串(推荐 appsettings.json)
在 appsettings.json 的 ConnectionStrings 节点下添加:
"ConnectionStrings": {
"MySqlDb": "server=localhost;port=3306;database=myappdb;user=root;password=123456;CharSet=utf8mb4;"
}
关键细节:
-
用
utf8mb4替代utf8:支持 emoji 和四字节 Unicode 字符 - 显式写
port=3306:避免默认端口误判;若改过端口(如腾讯云/阿里云 RDS),务必填对 - 密码含特殊字符(如
@、/)时,需 URL 编码(例如pass@123→pass%40123)
定义 DbContext 并注册服务
新建上下文类,比如 AppDbContext.cs:
public class AppDbContext : DbContext
{
public AppDbContext(DbContextOptions options) : base(options) { }
public DbSet Users { get; set; }
}
在 Program.cs(.NET 6+)中注册:
var builder = WebApplication.CreateBuilder(args);
var connectionString = builder.Configuration.GetConnectionString("MySqlDb");
builder.Services.AddDbContext(options =>
options.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString)));
注意:ServerVersion.AutoDetect 会自动识别 MySQL 版本(5.7 / 8.0 / 8.4),无需手动指定;如需精确控制(如用 8.0.33 的特性),可改为 new ServerVersion(new Version(8, 0, 33), ServerType.MySql)。
生成数据库表(Code First)
实体类写好后,运行两条命令即可建库建表:
- dotnet ef migrations add InitialCreate
- dotnet ef database update
首次运行会自动创建数据库(只要连接字符串里指定的库名不存在,Pomelo 默认会尝试创建);若提示权限不足,请确认 MySQL 用户有 CREATE DATABASE 权限。
基本上就这些。不复杂但容易忽略的是字符集
、端口、认证方式这三点——连不上时优先检查它们。
# mysql
# word
# js
# json
# 编码
# app
# 字节
# 端口
# 工具
# 腾讯
# 阿里云
# microsoft
# 腾讯云
# .net
# 字符串
# database
# 数据库
# 三步
# 的是
# 首次
# 不需要
# 工具包
# 自动识别
# 不存在
# 两条
# 管理器
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
详解Android图表 MPAndroidChart折线图
如何快速搭建高效WAP手机网站吸引移动用户?
如何用PHP快速搭建CMS系统?
Windows Hello人脸识别突然无法使用
高防服务器租用指南:配置选择与快速部署攻略
教学论文网站制作软件有哪些,写论文用什么软件
?
千库网官网入口推荐 千库网设计创意平台入口
标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南
lovemo网页版地址 lovemo官网手机登录
Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】
作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】
网站制作报价单模板图片,小松挖机官方网站报价?
如何快速辨别茅台真假?关键步骤解析
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
Laravel怎么自定义错误页面_Laravel修改404和500页面模板
iOS中将个别页面强制横屏其他页面竖屏
如何为不同团队 ID 动态生成多个独立按钮
Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
手机网站制作与建设方案,手机网站如何建设?
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】
成都网站制作公司哪家好,四川省职工服务网是做什么用?
js代码实现下拉菜单【推荐】
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
百度浏览器如何管理插件 百度浏览器插件管理方法
Win11怎么设置默认图片查看器_Windows11照片应用关联设置
Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】
Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作
如何实现javascript表单验证_正则表达式有哪些实用技巧
利用vue写todolist单页应用
如何用y主机助手快速搭建网站?
Internet Explorer官网直接进入 IE浏览器在线体验版网址
如何用腾讯建站主机快速创建免费网站?
Python结构化数据采集_字段抽取解析【教程】
EditPlus中的正则表达式实战(5)
JS中对数组元素进行增删改移的方法总结
Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】
PHP正则匹配日期和时间(时间戳转换)的实例代码
Laravel如何处理文件下载请求?(Response示例)
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程
如何在建站之星绑定自定义域名?
浅析上传头像示例及其注意事项
CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】
b2c电商网站制作流程,b2c水平综合的电商平台?

