Visual Studio 2017未在连接列表中显示MySQL

问题描述 投票:0回答:1

我正在使用“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版本。如果有魔法组合请告诉我。

c# mysql visual-studio entity-framework
1个回答
1
投票

我这场斗争已经持续了两个星期。我终于找到了适合我的版本组合。以下内容适用于两周前我的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工作!

© www.soinside.com 2019 - 2024. All rights reserved.