【发布时间】:2010-12-14 22:03:37
【问题描述】:
我正在使用带有MySQL .NET Connector 的VS2010。我曾经工作的项目开始报告:
错误 175:找不到指定的数据存储提供程序,或无效。
我不知道为什么,虽然在 MS 推荐 VS 的修补程序后事情变得很奇怪。
果然,如果我在项目中添加一个测试 ADO.NET 实体数据模型,当我选择“从数据库生成”时,生成 .edmx 文件的实体数据模型向导不会显示数据提供者。更糟糕的是,右键单击并尝试在现有 .edmx 文件上执行“从数据库更新模型...”会使 VS2010 陷入只能通过任务管理器终止的对话框的死亡螺旋。
我是这样解决的:关闭 VS2010。完全卸载 MySQL 连接器。重启。完全安装 MySQL 连接器。重启。重启VS2010。
突然间,我的数据提供者出现了。我可以编译我的代码。以及添加测试 .edmx 文件。向导会看到我的 MySQL 数据库,通过测试连接,并使用我的关系表构建对象模型。我可以随心所欲地清理/重建。
在我运行应用程序之前一切正常。我的“修复”没有坚持。
此时会引发异常,说明连接对象返回 null,如果我在没有更改代码的情况下重新编译,我会再次收到 Error 175 错误。起泡、冲洗、重复。
一些experiments based off of this StackOverflow answer,表明连接字符串是有效的,并且使用 MySqlConnection 对象,我可以在这种状态下访问数据库并滚动我自己的工作查询 .
问题似乎是数据存储提供者不知何故迷路或被踩到,这影响了通过 EntityFrameworks 执行操作的能力。
我正在寻找一些关于在哪里查找这些存储的建议,是否有人遇到过类似的事情,以及是否有任何有用的建议或想法你认为我可以尝试。
更新 -- 虽然这个花絮并没有解决我的问题,它确实让 VS2010 更稳定:在卸载 .NET 连接器后,我立即在控制面板的安装了程序,发现还安装了一个较旧的 .NET 连接器。我从控制面板卸载了那个,重新启动,然后然后安装了新的。 VS2010 现在可以记住使用 EntityFrameworks 的数据库提供程序。显然我安装了一个较新的 MySQL 连接器,认为它会卸载旧的连接器,而不是它们互相踩。
现在我在System.Data.Entity.dll 内收到一个System.ArgumentException,说明略有不同的消息:
在配置中找不到指定的商店提供程序,或者无效。 System.ArgumentException:找不到请求的 .Net Framework 数据提供程序。 可能没有安装。
这发生在System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName) 方法中。
REVISION NOTE -- 上面删除的原因是 VS2010 最终确实再次丢失了设置。但我能够从控制面板卸载 .Net 连接器并再次重新安装连接器,而无需重新启动,并让我的数据提供程序再次回到环境中。这部分问题感觉更像是 VS2010 错误,而不是 .NET 连接器问题。
【问题讨论】:
-
决定更改连接的名称并导致不同的错误,“在配置中找不到指定的命名连接,不打算与 EntityClient 提供程序一起使用,或两者兼而有之。 "所以我把它放回去,证明我确实使用了正确的 app.config 连接字符串,如前所述,它确实连接到数据库。
-
直接在VS2010中进行了另一个实验:转到工具/连接到数据库...,按更改...,选择MySQL数据库并从“.NET Framework Data Provider for MySQL”下方的下拉列表中,然后按确定。提供服务器名称 localhost、用户名 root 和 MySQL 密码。按测试连接报告“测试连接成功”。然后我按 OK。同时,数据库名称下拉菜单保持禁用状态(尽管我知道我有一个数据库),如果我按 OK,我会弹出“无法找到请求的 .Net Framework 数据提供程序。它可能没有安装。”
-
完全卸载 MySQL 的一切——数据库、工作台、连接器。随后重新安装最新最好的版本。不用找了。错误 175 仍然出现。我非常怀疑配置问题,但不知道在哪里查看。
-
这可能是相关的——添加 .edmx 会导致 machine.config 获取其 MySQL 条目:social.msdn.microsoft.com/Forums/en-US/wcf/thread/…
-
VS2010 是否使用 MySQL 6.3 连接器要求 仅使用 .NET 4,见底部dev.mysql.com/doc/refman/5.1/en/connector-net-versions.html
标签: .net mysql visual-studio-2010 entity-framework dataprovider