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

标签 c# mysql visual-studio entity-framework

我正在使用“Visual Studio 2017专业版”。我无法让一个项目认识到MySQL是一个可用的DB选项。创建新模型时,MySQL不会显示在可能的连接列表中。我知道有很多关于这个话题的问题和其他网页,因为我尝试了很多建议。每一个在原因和解决方案上都有微妙的不同。所有的解决方案似乎都不适合我。
我已经尝试了以下与VS 2017和2015的相同结果。我有旧版本的VS可用,但似乎不值得这么远。我也试过在必要时用“社区安装程序”和独立的msi安装最新和旧版本的MySQL。我回到了MySQL的“最新”6.10之前的版本。
首先,这段传奇始于上周,当时我注意到nuget提供了MySQL包更新。我应用了它们,然后使用社区安装程序升级已安装的MySQL组件。nuget的变化确实适用。但是社区安装程序无法卸载MySQL for VS。系统安装程序无法卸载它。重启和电源循环什么也没做。
根据我们当地技术支持人员的建议,我使用了第三方卸载程序,结果比我们想象的更具攻击性。它似乎在注册表中随机地删除了它找到的任何东西。长话短说(呃),我的机器最终被重新损坏了。所以,我有一个新的windows安装。
考虑到新的Win10平台,我安装了我通常使用的各种东西,包括我通常使用的VS版本。我安装了最新的社区MySQL安装程序。我做了一个“自定义”MySQL安装,因为我不需要在这个设备或结构或其他许多东西上安装服务器。
我完成了所有东西的基本重新安装,然后重新启动以确保安全。我从VS 2017开始,创建了一个新的web应用程序,其中包含最新的可用版本.Net(4.6.1)。我应用了nuget更新并添加了EntityFramework和MySQL.Data。然后我尝试创建一个新的“代码优先”模型。
我可以达到要求我建立联系的程度。当我单击按钮时,可用的数据库提供程序列表只显示MS SQL。
我看过一些文章说要在Web.config中添加行,我也看到了MySQL.Net连接器文档,它们说了同样的话。我可以在Web.config中看到MySQL条目,但是它们在创建连接时不会出现。
奇怪的是,我可以转到Tools -> Connect to Database查看我的机器知道的包括MySQL的每种DB类型。我可以创建连接字符串,它可以工作。我可以在“服务器资源管理器”中看到数据库,但这并不能使它对代码可用。
好吧,我已经一遍又一遍地遵循了上面的步骤,包括降低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>

编辑
我现在的印象是VS2017是一个不可用的混乱伪装成一个发布,可销售的产品。我回到了2015年。
我已经接近于在2015年让它发挥作用。我已经为VS和.Net安装了最新的MySQL项。我已经将nuget EF包降级到6.0,MySql包降级到6.8.8。
在中,我现在称之为“过去的美好时光”,我可以通过选择Models文件夹,选择“添加新项”,选择ADO.Net模型,选择一个连接选项(MySQL),输入连接信息,选择DB First或Code First,等待scaffolding乐趣完成,来向MVC项目添加新模型。
现在,我必须首先转到Tools -> Connect to Database并创建到MySql数据库的连接。如果我不这样做,我将不会在以后可能的连接列表中看到MySQL然后我清理并建立项目。接下来,我尝试创建如上所述的模型。不我可以看到MySQL连接选项,我可以输入DB creds并测试连接。
下一步是先选择DB或Code。在这两种情况下,单击“下一步”按钮会闪烁一个空白弹出窗口,然后消失。没有显示错误,也没有连接。
过去从来没有这么难过。
在2015年和2017年,我尝试了很多不同的MySQL和EF版本。如果有魔法组合请告诉我。

最佳答案

我已经打了两个星期了。我终于找到了一个适合我的版本组合。以下是两周前对我的Win10桌面的一个原始重影。在开始处理MySql之前,所有补丁都应用到了系统软件中。
就在今天早上,我重新阅读了这个帖子(MySql论坛):https://forums.mysql.com/read.php?174,659102,660369#msg-660369
我以为我以前试过那些建议,但我一定弄错了其中一个版本。我认为海报的基本策略是正确的。在我的例子中,我卸载了所有本地MySql部分和安装程序。
我下载了最新的开发版本MySQL for Visual Studio(本文撰写时为2.0.5msi),并安装了它。
我找到了.Net连接器的旧版本并安装了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数据库中添加一个新的“代码优先”模型。。。成功了!

关于c# - Visual Studio 2017在连接列表中未显示MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49036983/

相关文章:

c# - VS2010 Test Professional/Team Server 的替代品?

c# - 应用程序配置为使用 IIS (Visual Studio 2017/2019)

c# - 文件上传 - 返回 null

c# - asp.net web 项目中的 Razor View

c# - 在列表反序列化期间忽略缺失的类型

mysql - MySQL 上关联多个表

php - Laravel PHP 和 Mysql : Convert table data into columns and rows by counting the instances of a string

php - 如何在同一行插入多个图像名称并显示 php-mysql

C++抽象类无法实例化

c# - Asp.net MVC 下拉列表中的多个字段