MySQL数据提供程序未在Entity Data Model向导中显示的问题求助
解决MySQL + EF6 在Visual Studio中生成模型的连接器问题
我帮你梳理下这个问题的解决方案,毕竟MySQL和EF6搭配在不同VS版本里踩坑是常事😉
针对Visual Studio 2015的解决方案
1. 先确认组件安装顺序和版本匹配
你的环境里MySQL Server 5.7.21、Connector/NET 6.10.5、VS2015、MySQL for Visual Studio 1.27,这里有个关键:必须先装MySQL for Visual Studio,再装Connector/NET。如果之前装反了,建议完全卸载这两个组件,重启电脑后按正确顺序重新安装——顺序错了很容易导致连接器不被VS识别。
2. 修复EF6相关NuGet包的安装问题
安装Mysql.data.Ef6出错,大概率是版本不匹配或者依赖冲突,按这个步骤来:
- 先在NuGet包管理器里卸载已有的
Mysql.data.Ef6和MySql.Data包,别留残留 - 重新安装和你的Connector/NET版本完全一致的
MySql.Data.EF6(也就是6.10.5版本),版本一定要对应,不然兼容性问题一堆 - 关于
System.Runtime包,要确保它的版本和你的项目.NET框架匹配,比如项目用.NET 4.5的话,装4.3.0左右的版本就好,别瞎装最新的
3. 手动配置EF提供程序(终极方案)
如果还是看不到MySQL连接器,直接手动改配置文件,把提供程序加进去:
打开项目的app.config或web.config,找到<entityFramework>节点,添加MySQL的提供程序:
<entityFramework> <providers> <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" /> </providers> </entityFramework>
再找到<system.data>节点,添加DbProviderFactory配置:
<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>
改完保存,重启VS再试。
4. 检查VS2015的组件是否齐全
确保VS2015安装了Data storage and processing工作负载里的Entity Framework相关组件,没装的话打开VS安装器,补充安装这个工作负载。
针对Visual Studio 2017的解决方案
VS2017里能看到提供程序但点确定就闪退,主要是版本兼容的锅:
- 升级MySQL组件版本:Connector/NET 6.10.5对VS2017的支持不太够,建议把Connector/NET升级到8.0.x版本,同时MySQL for Visual Studio升级到2.0以上——8.0系列对VS2017/2019的支持完善很多。
- 检查项目框架版本:确保项目用的是.NET Framework 4.6及以上版本,低版本框架和新版MySQL组件不兼容,很容易导致对话框崩溃。
- 修复VS2017:如果上面两步都没用,打开VS安装器,选择修复VS2017,可能是VS的某些组件损坏了。
通用排查小技巧
- 不管哪个VS版本,改完配置或装完组件后,一定要重启VS,不然很多变化不会生效
- 检查项目引用的
MySql.Data、MySql.Data.Entity.EF6还有System.Data的Copy Local属性,都设为True,避免运行时找不到组件 - 清理项目的bin和obj文件夹,重新生成项目后再尝试生成模型,有时候缓存会搞事情
内容的提问来源于stack exchange,提问作者Akhil
相关产品推荐
相关产品推荐

