我正在使用“Visual Studio 2017 Professional”。我无法让项目认识到MySQL是一个可用的数据库选项。当我创建新模型时,MySQL不会显示在可能的连接列表中。我知道有很多关于这个主题的SO问题和其他网页,因为我已经尝试了很多建议。每一个都是微妙的原因和解决方案。这些解决方案似乎都不适合我。
我在VS 2017和2015上尝试了以下相同的结果。我有较旧版本的VS可用,但似乎不值得这么做。我还尝试使用“社区安装程序”和必要时的独立msi安装最新版本和旧版本的MySQL。我回到了最新的6.10之前的MySQL版本。
首先,这个传奇开始于上周,当时我注意到nuget有可用的MySQL软件包更新。我应用它们然后用Community Installer升级已安装的MySQL组件。 nuget的变化确实适用。社区安装程序无法卸载VS for MySQL。系统安装程序无法卸载它。重启和电源循环没有任何作用。
根据我们当地技术支持人员的建议,我使用了第三方卸载程序,结果比我们想象的更具侵略性。它似乎已经随机地突破了整个注册表,删除了它发现的任何内容。长话短说(呃),我最终让我的机器重新成像了。所以,我有一个新的Windows安装。
鉴于新的Win10平台,我安装了我通常使用的各种东西,包括我通常使用的VS版本。我安装了最新的Community MySQL安装程序。我做了一个“自定义”MySQL安装,因为我不需要在这个设备或结构或许多其他东西上的服务器。
我完成了所有内容的基本重新安装,然后重新启动以确保。我开始使用VS 2017并使用最新版本的.Net(4.6.1)创建了一个新的Web应用程序。我应用了nuget更新并添加了EntityFramework和MySQL.Data。然后我尝试创建一个新的“代码优先”模型。
我可以达到要求创建连接的程度。单击按钮时,可用数据库提供程序列表仅显示MS SQL。
我已经看到了为Web.config
添加行的文章,我已经看到MySQL .Net Connector文档说同样的事情。我可以在Web.config
中看到MySQL条目,但在创建连接时它们不会显示。
奇怪的是,我可以去Tools -> Connect to Database
并看到我的机器知道包含MySQL的每种数据库类型。我可以创建连接字符串,它的工作原理。我可以在“服务器资源管理器”中看到数据库,但这并不能使代码可用。
好的,我一遍又一遍地执行上述步骤,包括降级EntityFramework的版本以及MySQL版本。
我最近的尝试让我回到最新版本的VS和MySQL。 Web.config
文件的相关(我认为)部分如下。请注意defaultConnectionFactory
条目是LocalDbConnectionFactory
。我把它改为SqlConnectionFactory
,但它并没有什么不同。我也改变了提供者的顺序和主要块的顺序。
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<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.Entity.EF6, Version=6.10.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d">
</provider>
</providers>
</entityFramework>
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<add description=".Net Framework Data Provider for MySQL" invariant="MySql.Data.MySqlClient"
name="MySQL Data Provider"
type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.10.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
编辑
我目前的印象是VS 2017是一个无法使用的混乱,伪装成一个可发布的,可销售的产品。我回到了2015年。
我已经接近于2015年开始工作了。我已经安装了VS和.Net的最新MySQL项目。我已将nuget EF软件包降级到6.0,将MySql软件包降级到6.8.8。
在,我现在称之为“过去的好时光”我可以通过选择Models文件夹将新模型添加到MVC项目中;选择“添加新项”;选择ADO.Net模型;选择一个连接选项(MySQL);输入连接信息;选择DB First或Code First,等待脚手架的乐趣完成。
现在,我必须首先去Tools -> Connect to Database
并创建一个MySql DB的连接。如果我不这样做,我将不会在稍后的可能连接列表中看到MySQL。然后我清理并构建项目。接下来我尝试创建如上所述的模型。 Noe我可以看到MySQL连接选项,我可以输入DB信用并测试连接。
下一步是选择DB First或Code First。在任何一种情况下,单击“下一步”按钮会闪烁一个空白弹出窗口,然后消失。没有显示错误,也没有连接。
过去从未如此艰难。
到目前为止,我在2015年和2017年尝试了很多不同的MySQL和EF版本。如果有魔法组合请告诉我。
我这场斗争已经持续了两个星期。我终于找到了适合我的版本组合。以下内容适用于两周前我的Win10桌面的原始重新映像。在开始处理MySql之前,所有补丁都应用于系统软件。
就在今天早上,我重新阅读了这个帖子中的帖子(MySql Forums):https://forums.mysql.com/read.php?174,659102,660369#msg-660369
我以为我之前尝试过这些建议,但我必须弄乱其中一个版本。我认为海报的基本策略是合理的。在我的情况下,我卸载了所有本地MySql部件和安装程序。
我为Visual Studio下载了MySQL - 最新的开发版本(撰写本文时为2.0.5 msi)并安装了它。
我找到了.Net Connector的旧版本并安装了6.9.11
在VS 2017中,我使用.Net 4.6.1创建了一个虚拟项目。
我申请了待处理的VS更新。
我建立了这个项目。
我去了“Project - > Manage Nuget Packages”并将EntityFramework安装/降级到6.0。
我在版本6.9.11安装了MySql.Data,MySql.Data.Entity和MySql.Web
我清理并构建了项目,然后尝试从MySql DB添加一个新的“Code First”模型...... IT工作!