You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# 使用 Entity Framework 连接 MySQL 报错,SQL Server迁移场景求助

低预算数据库在线访问方案建议

  • 方案1:云托管MySQL实例 国内云厂商入门级MySQL实例年付成本仅需几十到一百余元,自带公网访问能力、白名单防护、自动备份能力,无需自行运维服务器,符合低预算需求。
  • 方案2:原有SQL Server不变+内网穿透 若不想修改现有成熟的SQL Server对接代码,可以继续使用免费的SQL Server Express版,搭配低成本内网穿透工具实现公网访问,迁移成本为0,仅需每年支付几十元的内网穿透服务费用。
  • 方案3:自建MySQL+轻量云服务器 若有一定运维能力,采购最低配置的轻量云服务器(年付百元左右)自行部署MySQL,公网访问灵活度更高。

Entity Framework对接MySQL报错解决步骤

从你描述的报错场景判断,属于EF版本与MySQL驱动不兼容的典型问题,可按以下步骤排查解决:

1. 确认版本匹配规则

不同EF版本对应不同的MySQL驱动要求,版本必须严格对应才不会报错:

  • 若使用EF6:需安装MySql.Data和MySql.Data.EntityFramework包,两个包版本必须完全一致,且最高不能超过8.0.32,更高版本的Oracle官方MySQL驱动已经不再支持EF6。
  • 若使用EF Core:优先使用社区维护的Pomelo.EntityFrameworkCore.MySql包,兼容性远优于Oracle官方驱动,版本需和你使用的EF Core大版本匹配。

2. 清理冲突包

打开NuGet包管理器,完全卸载项目中所有已安装的EntityFramework、MySql开头的相关包,删除残留的配置节点后再重新安装匹配版本的包,避免版本残留冲突。

3. 修正配置文件

在App.config(桌面程序)或Web.config(Web程序)中添加正确的MySQL EF提供器注册配置,示例如下:

<entityFramework>
  <providers>
    <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.EntityFramework" />
  </providers>
</entityFramework>
<system.data>
  <DbProviderFactories>
    <remove invariant="MySql.Data.MySqlClient" />
    <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data" />
  </DbProviderFactories>
</system.data>

4. 重新生成EF模型

如果你使用Database First模式,删除原有EDMX文件后重新添加ADO.NET实体数据模型,选择MySQL数据源重新生成映射代码即可解决大部分映射报错。

额外检查项

  • 确认MySQL服务端版本为5.7及以上,更低版本兼容性较差
  • 若为公网访问的MySQL实例,需在服务端放开你本地IP的访问权限,或者给数据库账号配置允许任意IP访问(生产环境不推荐)
  • 测试连接字符串是否正确,可先用数据库管理工具测试数据库连接正常后再复制到程序配置中

内容的提问来源于stack exchange,提问作者SHADOW.NET

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 06:30:03