如何使用Entity Framework将C#控制台应用连接至MySQL(PHPMyAdmin)数据库
解决Entity Framework连接MySQL(PHPMyAdmin管理)的配置问题
嘿,我太懂你这种被官方工具卡壳的无奈了!换成MySQL+PHPMyAdmin完全可行,我来给你一步步讲清楚怎么配置,保证能跑通:
第一步:安装MySQL对应的EF Core驱动包
Entity Framework Core本身不自带MySQL的支持,需要安装第三方驱动,现在最流行且维护活跃的是Pomelo.EntityFrameworkCore.MySql。你可以通过三种方式安装:
- 右键项目 → 打开「管理NuGet程序包」,搜索
Pomelo.EntityFrameworkCore.MySql并安装,记得选和你EF Core版本匹配的包 - 用Package Manager Console执行命令:
Install-Package Pomelo.EntityFrameworkCore.MySql - 或者用.NET CLI命令:
dotnet add package Pomelo.EntityFrameworkCore.MySql
第二步:配置数据库连接字符串
打开你的项目配置文件(ASP.NET Core项目是appsettings.json,桌面项目可手动创建配置文件),添加MySQL的连接字符串:
"ConnectionStrings": { "MySqlDbConnection": "server=localhost;database=你的数据库名称;user=root;password=你的MySQL密码;port=3306;SslMode=None;" }
注意事项:
server默认是localhost,如果你的MySQL不在本地就改对应的地址database是你要使用的数据库名(可以先在PHPMyAdmin里手动建空库,也可以让EF后续自动创建)port默认是3306,改了MySQL端口要对应调整SslMode=None适合本地开发,避免SSL证书验证问题;生产环境可按需调整
第三步:注册并配置DbContext
接下来要告诉EF Core使用MySQL作为数据库提供商:
如果你用的是.NET 6+的顶级Program.cs:
var builder = WebApplication.CreateBuilder(args); // 注册你的DbContext builder.Services.AddDbContext<YourDbContextName>(options => { var connectionString = builder.Configuration.GetConnectionString("MySqlDbConnection"); // 自动检测MySQL版本,不用手动指定 var serverVersion = ServerVersion.AutoDetect(connectionString); options.UseMySql(connectionString, serverVersion); }); // 其他代码...
如果你用的是旧版本的Startup.cs:
在ConfigureServices方法里添加:
public void ConfigureServices(IServiceCollection services) { var connectionString = Configuration.GetConnectionString("MySqlDbConnection"); var serverVersion = ServerVersion.AutoDetect(connectionString); services.AddDbContext<YourDbContextName>(options => options.UseMySql(connectionString, serverVersion)); // 其他服务注册... }
第四步:创建数据库和执行迁移
现在就可以用EF Core的迁移工具来生成数据库和表了:
- 打开Package Manager Console,执行:
Add-Migration InitialCreate Update-Database - 或者用.NET CLI:
dotnet ef migrations add InitialCreate dotnet ef database update
执行完之后,打开PHPMyAdmin就能看到EF自动创建的数据库和表了!
额外注意点
- 确保本地的MySQL服务是运行状态(Windows可以在「服务」里找
MySQL80类的服务,右键启动) - 手动创建数据库时,要保证名称和连接字符串里的完全一致
- 如果连接失败,先检查MySQL的用户名、密码、端口是否正确
- 迁移报错大概率是驱动版本和EF Core版本不匹配,记得选对应版本的Pomelo包
如果过程中遇到具体的错误提示,比如连接超时、迁移失败的具体信息,可以把错误内容贴出来,我再帮你针对性排查!
内容的提问来源于stack exchange,提问作者media watch
相关产品推荐
相关产品推荐

