mysql - 无法从 visual studio 2015 连接到 mysql

标签 mysql visual-studio visual-studio-2015 mysql-connector

所以我已经花了大约 2 天时间尝试解决这个问题。我已经成功地在我的工作场所电脑上修复了这个问题,但无法让它在我的家用电脑上运行。我已经阅读了大约十二篇 SO 文章和 oracle 论坛文章等等,但它仍然不起作用。

我有 1.2.4 msql for visual studio,它应该是一个适用于 vs2015 的版本。我已经安装了 mysql 连接器 6.8.6,并首先尝试通过 nuget 将 mysql 添加到我的项目中,但是在找不到 6.8.6 版本之后(一个包有 6.8.3 和 6.9.7,然后又是其他的对于另一个......)我已经引用了我的 C:\Program Files (x86)\MySQL\MySQL Connector Net 6.8.6\Assemblies\v4.5 并在那里获取了 4 个文件并将它们复制到整个 fkin计算机。我把它贴得到处都是。 vs2013 私有(private)程序集,我什至没有引用的包文件夹,我认为是一些 vs2015 文件夹。我搜索了 Mysql.Data 并将这些文件粘贴到结果出现的每个文件夹中。我已经重建解决方案大约 100-200 次并且哭了至少 20 分钟。

我必须做什么才能生成新的 ADO.Net 实体数据模型?

我一直觉得这很蠢 enter image description here 图像,我真的完全不知道下一步该做什么。我只想编写代码,但每次我开始做某事时,我都会在无法正常工作的工具上浪费几天时间。我真的必须在记事本中编写代码,这样我才能确定出现问题是我的错吗?

这是我的 app.Config 文件。我的项目中没有任何其他内容。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v12.0" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
  <system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient" />
      <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.8.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
  </system.data>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-6.8.6.0" newVersion="6.8.6.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <connectionStrings>
    <add name="KPlusConnectionString" connectionString="server=dito.ninja;user id=xxx;password=xxx;database=xxx" providerName="MySql.Data.MySqlClient" />
  </connectionStrings>
</configuration>

最佳答案

为了让 VS 2015 连接到 MySql,您需要使用更高版本的 MySql 库。虽然这看起来是一个非常简单的答案,但老实说,我在此过程中遇到了几个问题。考虑到这一点,我将写出在让 EF 与 MySql 和 VS2015 一起工作方面一直对我有用的 1 个过程。因此,事不宜迟,以下是我为实现这一目标而采取的步骤。

1) 确保 MySql 连接器安装已更新

2) 创建您的网络项目

3) 打开Nuget

4) 安装 Entity Framework

5) 搜索MySql

6) 安装MySql.Data

7) 安装MySql.Data.Entity

8) 安装 MySql.Data.Entities

9) 安装MySql.Web

10) 转到项目的引用并删除 MySql.Data.Entity.EF6

11) 检查 MySql.Data 和 MySql.Web 库的版本。如果低于 6.9.6 也删除它们

12) 通过浏览到适用于您的 .NET Framework 版本的 mysql 连接器的安装位置(我的是 C:\Program Files (x86)\MySQL\Connector.NET 6.9\Assemblies\v4. 5) 并获取 MySql.Data.Entity.EF6.dll(我的版本是 6.9.6,稍后我们更改 web.config 时请记住这一点)

13) 如果其他库也是旧版本,请通过浏览到解决方案中的包文件夹并从它们各自的文件夹中抓取文件来添加对它们的引用。我通常不必这样做。

14) 现在需要编辑 Web.config。第一步是用这段代码替换 Entity Framework 部分(将版本号更改为您当前的版本。请注意,我几周前在网上找到了这段代码,但没有原始链接。我向原作者道歉此信息的海报。)

<entityFramework>
<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" />
<providers>
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</providers>
</entityFramework>

15) 确保您的 DbProviderFactories 部分匹配

<DbProviderFactories>
  <remove invariant="MySql.Data.MySqlClient" />
  <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>

16) 保存并构建

我不确定实际需要执行多少这些步骤,但在最终完成之后,我不得不真正完成一些工作,没有时间进一步缩小范围。希望这能让你感动。

附言如果在所有这些之后你通过向导并且它在它向你显示数据库中的表以从中创建实体之前就消失了,那么它可能是我在此过程中遇到的三个问题之一。无法联系数据库服务器。用户对数据库没有所需的权限。添加了错误版本的 MySql.Data.Entity.EF6 作为引用或 web.config 中的版本号错误。如果我从我的解决方案的包目录中获取此文件,我经常会遇到这个 aborted-wizard-with-no-error-message 问题。从 MySql 安装目录中获取它对我来说每次都很好。

关于mysql - 无法从 visual studio 2015 连接到 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32037178/

相关文章:

android - Xamarin android 找不到 id 字段

mysql - 此 Ruby on Rails 代码是否容易受到 SQL 注入(inject)攻击?

visual-studio-2010 - 在 Visual Studio 2008 中按 F1 时如何在默认浏览器中搜索 MSDN?

mysql - 按数据库中的 Emp_ID 和信用日期插入最短日志时间和最长日志时间

c++ - 为什么我在这里需要这个花括号?谁能解释我为什么会这样?

c - 如何使用指向数组的指针变量扫描元素

visual-studio-2015 - 编辑 project.json 时 Visual Studio 卡住

sql-server - Visual Studio 2015 升级后,如何打开 VS 2005 报表项目?

mysql - 如何自动生成数据库图? mysql

mysql - Access 和MySQL