Visual Studio数据库连接未在Entity Data Model向导中显示求助
我之前也踩过VS2015搭配MySQL EF6的适配坑,结合你的情况,给你几个亲测有效的解决步骤:
1. 安装MySQL for Visual Studio插件
NuGet包只负责项目层面的引用,VS的数据源识别还需要专门的插件支持。你需要下载适配VS2015的MySQL for Visual Studio版本(推荐1.2.7,这个版本对VS2015和EF6的兼容性最好),安装完成后务必重启Visual Studio。
2. 确保NuGet包版本完全匹配
你的项目里MySql.Data和MySql.Data.Entity.EF6的版本必须保持一致(你当前用的6.10.5)。如果之前安装时版本有差异,建议:
- 先在NuGet包管理器中卸载这两个包以及EntityFramework
- 重新安装同版本的
MySql.Data、MySql.Data.Entity.EF6和对应的EntityFramework(6.2版本没问题)
3. 完善App.config/Web.config的配置
除了你已有的connectionStrings和providers节点,还需要添加DbProviderFactories注册,让VS能识别MySQL数据源。在<configuration>节点下添加:
<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, Version=6.10.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> </DbProviderFactories> </system.data>
注意这里的Version要和你安装的NuGet包版本完全一致,PublicKeyToken保持c5687fc88969c44d即可。
4. 清理Visual Studio缓存
VS的缓存有时候会导致插件或数据源识别异常,关闭VS后,删除以下目录的内容:
%LOCALAPPDATA%\Microsoft\VisualStudio\14.0\ComponentModelCache%USERPROFILE%\AppData\Roaming\Microsoft\VisualStudio\14.0\Settings
重启VS后再尝试打开Entity Data Model向导。
5. 备选方案:改用Code First模式
如果EDMX向导始终无法正常工作,可以考虑跳过向导,直接使用EF的Code First模式:
- 编写对应数据库表的实体类
- 创建继承自
DbContext的上下文类,在构造函数中指定连接字符串名称:
public class FinanceContext : DbContext { public FinanceContext() : base("name=finance") { } public DbSet<YourEntity> YourEntities { get; set; } // 其他DbSet... }
这种模式不需要依赖VS的向导,配置更灵活,也能避开数据源识别的问题。
额外排查点
如果以上步骤都无效,检查你的XAMPP中MySQL的版本:6.10.5版本的MySql.Data包对MySQL 8.0及以上版本支持不佳,如果你的MySQL是8.x,建议升级NuGet包到8.x版本(注意VS2015对8.x包的兼容性可能有限,必要时可以考虑降级MySQL到5.7版本)。
内容的提问来源于stack exchange,提问作者Ciphra




