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

Visual Studio 2019下.NET应用连接MySQL数据库失败求助

解决EF6 + MySQL 8.0配置冲突问题

我来帮你排查这个.NET应用里EF6对接MySQL的配置问题,从你给出的App.config来看,里面存在几个明显的配置冲突,咱们一步步来修正:

1. 清理重复的Provider配置

你的<providers>节点里重复注册了MySql.Data.MySqlClient的provider,一个是旧的MySql.Data.Entity.EF6版本,另一个是你安装的8.0.22版本的MySql.Data.EntityFramework——这会让EF无法确定使用哪个提供程序,直接删掉旧的那一条即可。

2. 修正DefaultConnectionFactory类型

MySQL 8.x版本的EF6连接工厂已经迁移到MySql.Data.EntityFramework程序集里了,不再是旧的MySql.Data.Entity.EF6,所以要更新<defaultConnectionFactory>的类型。

3. 确保ConnectionString配置正确

别忘了检查你的连接字符串,providerName必须是MySql.Data.MySqlClient,格式要符合MySQL的要求,比如:

<connectionStrings>
  <add name="YourDbContextName" 
       connectionString="server=localhost;database=your_db;uid=root;pwd=your_password;SslMode=None" 
       providerName="MySql.Data.MySqlClient" />
</connectionStrings>

注意:本地测试时加上SslMode=None,可以避免SSL连接报错

4. 统一所有MySQL相关组件的版本

确保以下组件版本完全一致(都是8.0.22):

  • Connector/NET
  • NuGet安装的MySql.Data和MySql.Data.EntityFramework
  • MySQL for Visual Studio(虽然影响不大,但尽量保持版本匹配)

5. 完整的App.config示例

修正后的<entityFramework>节点应该是这样的:

<entityFramework>
  <defaultConnectionFactory type="MySql.Data.EntityFramework.MySqlConnectionFactory, MySql.Data.EntityFramework" />
  <providers>
    <provider invariantName="MySql.Data.MySqlClient" 
              type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.EntityFramework, Version=8.0.22.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    <provider invariantName="System.Data.SqlClient" 
              type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
  </providers>
</entityFramework>

6. 最后一步:清理重建项目

做完以上修改后,执行以下操作:

  • 卸载可能残留的MySql.Data.Entity.EF6 NuGet包(如果有的话)
  • 右键解决方案 → 清理解决方案
  • 删除项目的bin和obj文件夹
  • 重新生成解决方案

这样应该就能解决你添加数据库时的错误了,如果还有问题,可以把具体的错误信息贴出来,我再帮你进一步排查。

内容的提问来源于stack exchange,提问作者Moeez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 20:38:01