Visual Studio Community 2015中MySQL数据源未显示问题求助
我之前在VS2015社区版里也碰到过一模一样的问题,折腾了好一阵才解决,给你整理几个关键的排查和修复步骤,亲测有效:
1. 确认MySQL Connector/NET的版本与安装组件
VS2015对MySQL Connector/NET的版本兼容性要求很严格,别只靠NuGet包,必须安装对应版本的Connector/NET安装程序。最适配的是6.9.x系列版本(比如6.9.12),更高版本大概率会和VS2015的实体模型工具不兼容。
安装的时候一定要勾选「Visual Studio Integration」这个组件——这是让VS能识别MySQL数据源的核心,别漏选!
2. 确保NuGet包版本和Connector/NET完全匹配
你已经通过NuGet加了MySql.Data、MySql.DataEntity.EF6和MySql.Web,这三个包的版本必须和你安装的Connector/NET版本完全一致。比如你装的是Connector/NET 6.9.12,那NuGet里也得选6.9.12版本,版本差一点都可能导致数据源不显示。
3. 手动注册MySQL实体框架组件到GAC
如果安装了正确的Connector/NET还是没效果,可以手动把组件注册到全局程序集缓存:
- 找到Connector/NET的安装目录,默认是
C:\Program Files (x86)\MySQL\MySQL Connector Net 6.9.x\Assemblies\v4.5(把x换成你实际的版本号) - 找到
MySql.Data.Entity.EF6.dll,右键看「属性」→「详细信息」,复制它的文件版本 - 以管理员身份打开VS2015的命令提示符,执行这条命令(路径换成你自己的):
gacutil /i "C:\Program Files (x86)\MySQL\MySQL Connector Net 6.9.12\Assemblies\v4.5\MySql.Data.Entity.EF6.dll"
另外,还可以检查VS的EF模板目录:C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\Templates\Includes,如果里面没有MySQL.ttinclude,就从Connector/NET安装目录的Templates\EF6文件夹里复制过来,确保文件里的版本号和你安装的Connector/NET一致。
4. 校验web.config的配置是否正确
你的web.config里的连接字符串和EF配置必须准确,给你个参考示例:
<connectionStrings> <add name="MyDbContext" connectionString="server=localhost;port=3306;database=你的数据库名;uid=用户名;pwd=密码;" providerName="MySql.Data.MySqlClient" /> </connectionStrings> <entityFramework> <providers> <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" /> </providers> </entityFramework>
重点注意providerName和invariantName必须是MySql.Data.MySqlClient,别打错字。
5. 重置VS的组件缓存
有时候VS的组件缓存会抽风,导致识别异常:
- 完全关闭VS2015
- 打开文件夹
%LOCALAPPDATA%\Microsoft\VisualStudio\14.0\ComponentModelCache,删除里面所有文件 - 重新启动VS,再尝试添加ADO.NET实体模型
如果以上步骤都试过还是不行,建议彻底卸载现有Connector/NET和所有MySQL相关的NuGet包,清理残留后重新安装对应版本,再重复上面的步骤。
内容的提问来源于stack exchange,提问作者Mill3r

