连接到MySQL数据库时,实体框架的实体数据向导崩溃

时间:2016-08-23 20:22:28

标签: c# mysql visual-studio-2015 entity-framework-6

我正在尝试使用向导创建实体数据模型来对现有MySQL数据库进行反向工程。我进入向导的Choose Your Data Connection页面,选择现有的MySQL连接,然后单击Next,向导崩溃。具体来说,对话框只是消失,没有错误消息或任何跟踪。每一次。重启VS或Windows什么都不做。

我可以使用服务器资源管理器和相同的连接连接到数据库而没有问题,所以我相信它不会出现连接问题。

这是安装了所有更新的Visual Studio 2015,适用于Visual Studio的MySQL版本1.2.6,EF 6.1.3以及MySql.Data和MySql.Data.Entity.EF6版本6.8.3.0。它是一个针对.NET Framework 4.6.1的控制台应用程序。

谷歌还没有透露任何有用的信息。昨天的另一个question here类似,但在不同点崩溃,用户无法使用服务器资源管理器进行连接。所以这似乎是一种不同的情况。

Windows日志中没有任何帮助。

我该如何解决这个问题?

14 个答案:

答案 0 :(得分:33)

这是由版本不匹配引起的。

在我的系统上,我有MySQL Connector 6.9.6。 在NuGet Package Manger控制台中发出命令:

Install-Package MySql.Data.Entity 默认情况下安装版本6.9.8。您的连接器必须与NuGet包的实际版本匹配。 您可以从以下网址下载更新版本的连接器:https://www.mysql.com/products/connector/

这里选择" Ado.net驱动程序for MySQL",并下载相应的版本(在本例中为6.9.8)。重新打开Visual Studio,现在向导不会崩溃。无需重启。

答案 1 :(得分:6)

我今天遇到了这个问题,按照这里的提示进行操作是完全正确的!

我的重要“发现”是,他们已经重命名了EF6所需的软件包! 正如许多人发现的(例如“ Nofi”)一样,降级以匹配版本可以解决此问题。但是,不要降级新版本,而是将Mysql.Data.Entity包换成较新的MySql.Data.EntityFramework ! :)

short:使用 MySql.Data.EntityFramework ,而不是 Mysql.Data.Entity

答案 2 :(得分:2)

VS2017和最新的MySQL连接器(6.10.6)不断发生这种情况。将连接器和Nuget包降级到6.9.11可以正常工作。

答案 3 :(得分:2)

我遇到了同样的问题,因为我使用的是 Mysql连接器v 8.0.12 MySql.Data v8.0.12 Mysql.Data.Entity v6.10.8

由于兼容性问题,程序崩溃。对我有用的是我安装了所有三个相同版本的

Mysql连接器v 6.10.8 MySql.Data v6.10.8 Mysql.Data.Entity v6.10.8

答案 4 :(得分:1)

出于好运和机会,我遇到了同样的错误。 我也在使用VS 2015和Entity Framework 6。当我尝试使用EF逆向工程现有连接从数据库创建模型时,也发生了错误。

问题在于即使存在数据连接,并且您可以刷新它,也会以某种方式断开连接。转到左侧的服务器资源管理器面板,然后在数据连接下找到现有连接,而不是使用刷新进行检查,右键单击选择修改连接

从这里尝试测试连接并按OK。你应该得到一个错误(对我而言,它说'无法连接到任何指定的MySQL主机。')

答案 5 :(得分:1)

正如我对LarsMeldgård所说,卸载并重新安装Connector / Net版本6.9.9后,我在向导中进一步了解了一页。所以我会把它当作一场胜利。但我真的很困惑为什么这样做。我在两台不同的计算机,我的主台式机和笔记本电脑上遇到了问题。 Windows 10中的类似配置,一切都是最新的,所以都被破坏了?不太可能。

所以现在问题出现在向导的“选择你的版本”页面上,我在下面收到错误。但这是一个不同的问题,我将在下面讨论。

New error on next page of wizard

答案 6 :(得分:1)

我是编程/ .Net开发的新手。当我尝试从MySql数据库生成实体模型时,我遇到了同样的问题,即窗口消失了。

我尝试了Nuget包和连接器的匹配版本但仍然没有乐趣。我为使其工作所做的工作如下:

  • 我删除然后重新创建项目(幸运的是这是一个新项目) - 然后从数据库
  • 生成模型
  • 然后我安装了Nuget软件包以匹配我的连接器版本。

我正在使用VS 2017社区版, 连接器V6.9.9, Nuget包V6.8.8

希望这有助于某人。

答案 7 :(得分:1)

由于MySql.Data.Enetity的最高版本是v6.10.8,我可以通过nuget找到它,所以我下载了“ mysql-connector-net-6.10.8.msi”,因此我将MySql.Data降级为v。 6.10.8,那确实很骗人!

答案 8 :(得分:1)

对于那些在 Visual Studio 2019 社区中苦苦挣扎的人,我应用了 dev.mysql.com. 以下配置适用于我:

MySQL 安装程序:

  • MySQL 服务器 8.0.14
  • MySQL Workbench 8.0.14 [可能是可选的]
  • 用于 Visual Studio 1.2.9 的 MySQL
  • MySQL Shell 8.0.14 [可能是可选的]
  • 连接器/NET 6.10.8

NuGet 包:

  • EntityFramework v6.4.4
  • MySql.Data v8.0.14
  • MySql.Data.EntityFramework v8.0.14

注意:粗体的项目必须具有完全相同的版本。

运行安装后,Visual Studio 提示更新连接器之一。应用更新后(该位只需几分钟),系统即可运行。

答案 9 :(得分:0)

我正在分享我的问题,我终于解决了,因为这是一件非常令人头疼的问题。

我在Table Role中有一个Role ID列,最初在SQL中设置为number(38,0)并以这种方式创建,然后更改为NUMBER(10,0)并更改它。 经过几天尝试解决此问题后,我最终右键单击了Server连接中的表,然后单击Designer。我的一个表:Role,有一个列ID - 类型号(10,0)。它作为RoleID链接到表USER。检查表USER中的RoleID后,在设计器中它显示为Number(38,0)。 所以一个一个地检查你的外键......这是我的问题,花了我3天才终于赶上了。我的EF对话框也刚刚消失,或者在EDMX文件中没有给我任何表格。

答案 10 :(得分:0)

不匹配似乎在MySQL Connector Net的确切版本上。我在开发和生产中使用“ MySQL Connector Net 8.0.13”进行了许多项目,目前还无法全面升级。当前的NuGet程序包是“ MySQL Connector Net 8.0.15 ”。我必须同时卸载“ MySql.Data.EntityFramework 8.0.15”和“ MySql.Data 8.0.15”,然后强制使用命令行安装该版本以与我在dev和prod中运行的MySQL Connector Net的当前版本相匹配:

PM> Install-Package MySql.Data.EntityFramework -Version 8.0.13
PM> Install-Package MySql.Data -Version 8.0.13

答案 11 :(得分:0)

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

我将MySql.Data.EntityFramework的版本更改为8.0.16,因为我的连接器8.0.16消失了。这对我有用

答案 12 :(得分:0)

在Visual Studio 2019中使用EntityFramework安装MySQL 8.0 Server 安装MySQL Server 8.0.16

安装完整的MySQL Connector.Net x86 8.0.16

安装此自定义重新包装的VSIX MySQL Visual Studio

如果安装了MySQL Visual Studio插件后,它显示警告,提示无法执行comamnd devenv / updateconfiguration,然后以管理员身份在Visual Studio 20xx的开发人员命令提示符中手动执行该命令。

在Visual Studio Nuget包管理器控制台中运行此命令Install-Package EntityFramework

管理Nuget软件包>搜索Mysql>安装Mysql.Data v8.0.16

管理Nuget软件包>搜索Mysql>安装Mysql.Data.Entity v6.10.8

管理Nuget包>搜索Mysql.Data.EntityFramework>安装Mysql.Data.EntityFramework v8.0.16

如果未在Web.config中的标记后自动添加此行,则添加此行并重建解决方案 -> 即使执行上述所有过程也会发生一些错误,然后尝试卸载以上所有添加的nuget软件包,并尝试卸载Visual Studio插件和连接器网络的UnInstall-Package EntityFramework。然后重建新项目,并仅添加Install-Package EntityFramework,然后仅添加对EF6的Mysql.Data和Mysql.Data.EntityFramework的引用,然后如上所述在web.config中添加提供程序xml,并删除和标记之间的空白,然后重建项目,最后尝试添加模型。

此过程已经过测试并且可以在Visual Studio 2019上用于.Net Framework 4.7.2

答案 13 :(得分:0)

我最终通过将文件夹 c:\users\myusername\appdata\roaming\microsoft\visualstudio\10.0 重命名为“10.0 old”来解决此问题