Entity Framework的实体数据向导连接MySQL数据库时崩溃

28

我正在尝试使用向导创建实体数据模型,以逆向工程现有的MySQL数据库。我进入向导的“选择数据连接”页面,选择一个现有的MySQL连接并单击下一步,但是向导会崩溃。具体来说,对话框突然消失,没有错误消息或痕迹。每次都是如此。重启VS或Windows都没用。

我可以使用服务器资源管理器连接到数据库,而且同样的连接没有任何问题,因此我相当确信这不是连接问题。

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

Google还没有找到任何有用的信息。昨天的另一个问题类似,但在不同的位置崩溃,而且该用户无法使用服务器资源管理器连接。因此,这似乎是不同的情况。

Windows日志中没有任何有用的信息。

我该怎么解决这个问题?


我刚刚在另一台配置类似的Windows 10机器上尝试了这个。结果发生了同样的事情:当向数据库建立连接时,向导程序会突然关闭。 - RiverRunner
我知道这是VS2015和Connector/NET 6.8.3.0,但我想分享一下我使用最新版本的经历,即VS2017 Community和Connector/NET 8.0.11.0。基本上,ADO.NET数据模型向导在各个位置崩溃而没有错误消息,这是一个痛苦的失败。卸载并还原到Connector/NET 6.10.7(跳转到8之前的最后一个版本)解决了问题。 - William T. Mallard
14个回答

40

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

在我的系统上,我安装了MySQL Connector 6.9.6。 在NuGet Package Manager控制台中输入以下命令:

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

在此选择“Ado.net driver for MySQL”,并下载相应的版本(在本例中为6.9.8)。重新打开Visual Studio,现在向导不会崩溃。无需重新启动计算机。


这对我有用。我使用的是Connector 6.8.8,但是MySql.DataMySql.Data.Entity的版本是6.9.9。将NuGet包回滚到6.8.8后,一切都正常工作了。谢谢! - Tim
2
这个答案应该被标记为正确答案!谢谢! - Samra
2
如果你还有这个问题,看看我下面的解决方案吧 :) 简短地说:使用MySql.Data.EntityFramework,而不是Mysql.Data.Entity。 - Magnus Ingwersen
稍微澄清一下:这是已安装的MySQL DLL(在我的情况下是MySql.data和MySql.Data.Entity.EF6)与MySQL Connector.Net之间的不匹配,可以同时安装多个版本。当MySQL Installer更新时,它将替换旧版本的Connector.Net。只有当我需要从数据库重新生成ADO.Net数据模型时才会出现问题,如果Connector.Net版本与DLL版本不匹配,则会崩溃。 - William T. Mallard
1
在2019年的VS中无法工作...选择数据库连接后,仍然会出现向导崩溃的情况,并且没有显示任何错误信息。同样的版本也有此问题。 - Himanshu Bansal
显示剩余4条评论

17
今天我遇到了这个问题,这里提供的提示是“版本不匹配”,是完全正确的!
我的重要“发现”是,你需要的EF6包已被重命名!就像许多人在这里发现的一样(例如“Nofi”),将版本降级以解决问题。然而,不要降级新版本,而是使用新的MySql.Data.EntityFramework替换Mysql.Data.Entity包! :)
简而言之:使用MySql.Data.EntityFramework,而不是Mysql.Data.Entity

这是正确的答案 - Oracle 提供的文档是错误的。 - TechneWare

3
我遇到了同样的问题,原因是我使用的是Mysql connector v 8.0.12MySql.Data v8.0.12Mysql.Data.Entity v6.10.8
由于兼容性问题,程序崩溃了。对我有用的是安装了相同版本的这三个组件。
安装Mysql connector v 6.10.8MySql.Data v6.10.8Mysql.Data.Entity v6.10.8即可解决问题。

感谢您的清晰回答,对我在VS2015上起了作用。 - Brissles

3

纯属运气和机遇,我偶然发现了相同的错误。我也使用VS 2015和Entity Framework 6。当我尝试使用EF反向工程现有连接从数据库创建模型时,错误也出现了。

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

从这里尝试测试连接并按OK。您应该会收到一个错误(对我来说,它说“无法连接到任何指定的MySQL主机”)


4
谢谢!但是很遗憾,那并没有起作用。从“修改连接”对话框进行测试连接成功,但向导仍然在同一位置停止了。 - RiverRunner
@RiverRunner 我也是,只是关闭了窗口,没有错误。 - Liron Harel
2
自从我回答这个问题的那一年以来,我认为我有了更好的解决方案。回到基础:重新安装“mysql for VS”(确保您的版本正确),并确保引用了dll(我认为有2-3个),同时app.config必须正确设置。如果您遇到问题,请@IdanShechter创建一个新问题,我会尽力回答。 - Keyur PATEL

2
对于在 Visual Studio 2019 Community 中遇到困难的人,我应用了 dev.mysql.com 提供的解决方案。以下配置适合我:
MySQL 安装程序:
- MySQL Server 8.0.14 - MySQL Workbench 8.0.14 [可能是可选的] - MySQL for Visual Studio 1.2.9 - MySQL Shell 8.0.14 [可能是可选的] - Connector/NET 6.10.8
NuGet 包:
- EntityFramework v6.4.4 - MySql.Data v8.0.14 - MySql.Data.EntityFramework v8.0.14
注意:粗体项目必须完全相同版本。
安装完成后,Visual Studio 提示更新其中一个连接器。一旦应用了更新(只需要几分钟),系统就可以正常工作了。

2
这种情况在VS2017和最新的MySQL连接器(6.10.6)中经常发生。将连接器和Nuget包降级至6.9.11即可解决问题。

问题特别提到了Visual Studio 2015。 - Tersosauros
最新的6.10.6和Visual Studio 2017也发生了这种情况。 - DaManJ
1
确认降级到6.9.11是可行的。我还不得不将实体框架从6.2降级到6.1.3,以使6.9.11与EF兼容。 - DaManJ
1
仍然发生在8.0.11版本中,将向MySql提出问题报告并在此处发布链接... - William T. Mallard
这里有一个新的错误报告。https://bugs.mysql.com/bug.php?id=91201&thanks=4 真的很不可思议,居然没有日志或详细的描述和指示性的错误信息。:( - William T. Mallard

1

由于我能在nuget上找到的MySql.Data.Enetity的最高版本是v6.10.8,所以我已经下载了“mysql-connector-net-6.10.8.msi”,然后我将MySql.Data降级为v.6.10.8,这样就解决了问题!


1

我在评论中告诉Lars Meldgård,卸载并重新安装Connector/Net 6.9.9版本让我在向导中前进了一页,所以我将其视为胜利。但是我真的很困惑为什么这个方法有效。我在两台不同的计算机上遇到了问题,我的主要台式机和笔记本电脑。在Windows 10中配置相似且所有更新都已安装,所以它们都受损了吗?不太可能。

现在问题出现在向导的选择版本页面,我遇到了以下错误。但那是一个不同的问题,我下一步会解决它。

向导的下一页出现新错误


请确保在更新 EF 版本后重新构建您的应用程序。即使您还没有任何代码,也需要重新构建以使向导正常工作。 - Lars Meldgård

1
我是编程/.Net开发的新手。我遇到了同样的问题,当我试图从MySql数据库生成实体模型时,窗口会消失。
我尝试使用匹配的Nuget包和连接器版本,但仍然无法解决问题。我做的事情如下:
- 我删除并重新创建了项目(幸运的是这是一个新项目) - 然后从数据库生成模型 - 接着我安装了与我的连接器版本相匹配的Nuget包
我使用的是VS 2017社区版,连接器V6.9.9,Nuget包V6.8.8。
希望这能帮助别人。

1
我最终通过将文件夹c:\users\myusername\appdata\roaming\microsoft\visualstudio\10.0重命名为"10.0 old"来解决这个问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接