【问题标题】:Can't use a MySQL connection for entity framework 6无法将 MySQL 连接用于实体框架 6
【发布时间】:2014-02-07 23:32:26
【问题描述】:

我正在尝试将实体框架 6 与 MySQL 一起使用。

我确实为 Visual Studio 1.1.1 和 MySQL .Net 连接器 6.8.3 安装了 MySQL 插件。

问题是当我尝试创建新的 ADO.NET 实体模型时,我无法选择 MySQL 进行连接。

但如果我从 Visual Studio 中的连接工具创建连接,我可以看到 MySQL

表示当前安装的版本与实体框架6不兼容。我安装了最新的连接器和插件后怎么可能。还有什么事情要做吗?

谢谢

编辑

我在没有安装默认连接器的情况下重新安装了 MySQL,然后我安装了 6.8.3 和 Visual Studio 插件。

然后我可以看到我为我的实体模型建立的连接,但是当我要选择实体版本时,我收到了这条消息。

【问题讨论】:

    标签: mysql entity-framework visual-studio-2013


    【解决方案1】:

    我知道我迟到了。但我在 Visual Studio 2019 中遇到了同样的问题。我尝试安装 MySql 连接器以及 Visual Studio 的 MySql,但没有成功。

    对我有用的是

    1. 我安装了MySql for Visual Studio 2.0.5版的开发版。 (如果您使用我提到的上述链接,请不要忘记点击开发版本)
    2. 我安装了以下 nuget 包 MySql.Data.EntityFramework,它通常会安装许多其他包,包括 MySql.Datamysql.sata.entity.EF6 等。
    3. 我安装了Connector/NET 8.0.26

    我正在将 Visual Studio 2019 和 EF6 与 Windows 窗体应用程序一起使用。 连接器/NET 8.0.26

    【讨论】:

      【解决方案2】:

      2017 年解决方案

      安装 Nuget 包:

      Install-Package EntityFramework
      Install-Package MySql.Data.Entity -Version 6.9.9
      

      为 Visual Studio 1.2.6 安装 MySQL - https://dev.mysql.com/downloads/windows/visualstudio/

      Web.Config 的变化

      <EntityFramework>
      

      到:

      <EntityFramework codeConfigurationType = "MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6">
      

      添加(**您的信息**):

      <connectionStrings>
      <add name="**YourContextName**" connectionString="server=**xxx.xxx.xxx.xxx**;port=3306;user id=**your user**;password=**your password**;database=**your database**" providerName="MySql.Data.MySqlClient" /></connectionStrings>
      

      **重新启动 Visual Studio**

      我的设置:
      - Microsoft Visual Studio 社区 2015
      - 点网框架 4.5.2
      - Asp.Net MVC 5.2.3.0
      - MySql 服务器 5.6

      【讨论】:

      • 我正在使用 Visual Studio 2017 Enterprise 15.4.2 ,并且 MySQL for Visual Studio 安装(使用 MySQL 安装程序或独立安装程序)失败。我尝试执行此解决方法 ==> bugs.mysql.com/bug.php?id=85908&thanks=3&notify=195 但 VS 的 MySQL 安装仍回滚到 90%。请帮忙,自从 3 天以来,我一直在努力从我的数据库中更新我的模型:/ 我做了这个评论中描述的每一个步骤,但没有任何改变。当我在新的连接窗口上单击“从数据库更新模型”时,没有显示 MySQL 数据库选项。 @Chris 请帮忙?
      【解决方案3】:

      我也面临同样的问题。

      我做了以下事情:
      1. 从以下位置安装 MySQL for Visual Studio:
      https://dev.mysql.com/downloads/windows/visualstudio/
      2.在我的项目中安装MySql.Data
      3.在我的项目中安装MySql.Data.EntityFramework

      【讨论】:

        【解决方案4】:

        仅供使用多项目解决方案的所有人参考,如果您因查找/加载 MySql EF6 提供程序的问题而无法运行 GUI 项目,例如:

        找不到具有不变名称“MySql.Data.(...)”的 ADO.NET 提供程序的实体框架提供程序。确保提供程序已在应用程序配置文件的“entityFramework”部分注册。请参阅http://go.microsoft.com/fwlink/?LinkId=260882 了解更多信息。

        请看this question

        虽然它与 SqlServer 有关,但问题可能是相同的:如果您的项目中只有一个处理 DB 操作,那么很可能您向该项目添加了对 MySql.DataMySql.Data.EntityEntityFramework 的 Nuget 引用。由于MySql.DataEntityFramework 被代码直接使用,构建过程非常智能,可以将它们复制到输出文件夹,并在第二次将其复制到GUI 项目的输出文件夹中。

        但是,由于MySql.Data.Entity只被app.configweb.config文本文件引用,构建过程认为不需要这个引用(代码 strong> 不使用它!)并将其剥离,您将不会在 GUI 项目输出目录中看到 MySql.Data.Entity.EF6.dll,这会导致 GUI 项目无法找到该提供程序。

        所以 - 两个选项 - 确保在构建过程中复制该 DLL(即构建前/后构建事件、部署包构建器、CI 任务、人工任务等),或者直接引用在您的 DB/EF6 项目中组装。

        【讨论】:

          【解决方案5】:

          我在mySQL Bucktracker 上找到了这个

          尝试以下解决方法....

          在 MySQL 数据库上运行以下命令,然后尝试是否可行。

          设置全局 optimizer_switch='derived_merge=off'

          我还添加了以下程序集:

          • EF6 作为 Nuget 包
          • MySQL.Data
          • MySql.Data.Entity.EF6.dll
          • MySQL.Web(不确定是否真的需要)

          【讨论】:

            【解决方案6】:

            最新编辑

            错误已修复。

            克里斯的评论:

            2015-11-07,您现在无需编辑任何内容即可完成所有工作 文件或做奇怪的事情。使用 MySQL for Windows 安装程序和 包括 Visual Studio 支持和最新的 Connector.Net。是 安装后一定要更新,你会得到每个最新的 (1.2.5 和 6.9.8)。使用 NuGet 安装 EntityFramework、MySql.Data、 和 MySql.Data.Entity。最后,构建并享受代码优先反向 通过添加 Ado.Net 实体模型来工程善。

            原答案

            我发现这是 MySQL 的一个错误。

            Here's 解释解决方法的链接。

            在您安装了 VS 2013 的机器上,VS 插件 (1.1.3 GA) 和 连接器/网络

            在执行这些步骤之前关闭所有 VS 实例。

            在 Windows 资源管理器窗口中,转到此路径或您安装的任何位置 你的连接器/网络二进制文件

            C:\Program Files (x86)\MySQL\MySQL 连接器网络 6.8.3\Assemblies\v4.5\

            复制文件:

            MySql.Data.Entity.EF6.dll

            然后粘贴到这个文件夹中

            C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies

            如果它要求您覆盖它,请这样做。

            您需要管理员权限才能覆盖该文件。

            然后您可以再次尝试为您的模型生成脚本。

            重要的是你有 1.1.3 版本的 VS 插件 安装,因为此解决方法就是为此。

            不幸的是,它对我不起作用,所以我降级到实体框架 5,直到他们解决这个问题。

            编辑

            终于,它现在可以工作了。

            我必须添加以下 3 个 DLL:

            • C:\Program Files (x86)\MySQL\MySQL 连接器网络 6.8.3\Assemblies\v4.5\MySql.Data.dll
            • C:\Program Files (x86)\MySQL\MySQL Connector Net 6.8.3\Assemblies\v4.5\MySql.Data.Entity.EF6.dll
            • C:\Program Files (x86)\MySQL\MySQL 连接器网络 6.8.3\Assemblies\v4.5\MySql.Web.dll

            然后我将网络配置中的 EntityFramework 部分更改为:

            <entityFramework codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6">
                <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
                <providers>
                  <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" /> 
                </providers>
              </entityFramework>
            

            别忘了REBUILD,你应该可以使用 MySQL 创建实体框架 6 模型。

            重要

            确保您已安装 MySQL for Visual Studio 1.1.3 和 MySQL connector .net 6.8.3

            【讨论】:

            • 我遇到了同样的问题,我一步一步按照你的回答,现在可以了。
            • 我还需要 NuGet MySql.ConnectorNET.Entity(版本 6.8.3.2)才能正常工作。
            • 谢谢,这正是我所需要的。一个笔记认为,我刚刚下载了forums.mysql.com/read.php?174,601264,601264 中提到的最新版本,VS 插件的版本是 1.1.1,连接器的版本是 6.9.5。我可以验证这些版本也需要这些步骤。
            • 2015-11-07,您现在无需编辑任何文件或做奇怪的事情就可以让它全部工作。使用 MySQL for Windows 安装程序并包含 Visual Studio 支持和最新的 Connector.Net。请务必在安装后进行更新,您将获得最新的(1.2.5 和 6.9.8)。使用 NuGet 安装 EntityFramework、MySql.Data 和 MySql.Data.Entity。最后,通过添加 Ado.Net 实体模型构建并享受代码优先的逆向工程。
            • 几天的搜索和尝试,这终于帮助了我......谢谢
            【解决方案7】:

            2015-11-07 更新

            这些错误已修复,您现在无需编辑任何文件,甚至无需引用 NuGet 之外的程序集即可使其全部运行。您只需安装正确的东西并添加正确的 NuGet 包。方法如下:

            使用 MySQL for Windows 安装程序并包含 Visual Studio 支持和最新的 Connector.Net。请务必在安装后进行更新,您将获得最新的(1.2.5 和 6.9.8)。

            然后,使用 NuGet 安装 EntityFramework、MySql.Data 和 MySql.Data.Entity。

            最后,通过添加 Ado.Net 实体模型来构建并享受代码优先逆向工程。

            【讨论】:

              【解决方案8】:

              对我来说,重新安装 MySQL 并使用已安装的连接器版本作为 Visual Studio 中的参考工作!

              步骤:

              1. 使用适用于 Windows 的最新稳定 MySQL 连接器重新安装 MySQL 工具。
              2. 在 Visual Studio 中添加这 3 个文件作为参考:

              3. MySql.Data.dll

              4. MySql.Data.Entity.EF6.dll
              5. MySql.Web.dll

              6. 修改以下Web.config
                  <providers>
                    <provider invariantName="System.Data.SqlClient"  type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
                 </providers>
                

              收件人:

               <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" />
              </providers>
              

              确保您的连接用户名/密码/数据库名称正确,否则 Visual Studio 可能会崩溃。 (发生在我身上。)

              【讨论】:

                【解决方案9】:

                不知道这对你们来说是否仍然是个问题,伙计们,但上述解决方案都不适合我......直到我发现这个:

                http://www.microsoft.com/en-us/download/details.aspx?id=40762

                在应用补丁后(适用于 VS2013 和 VS2012),我让 VS2013 与 EF6 for MySql 完美配合。

                ps。安装的软件包版本(来自 NuGet):
                EntityFramework - 6.1.3 (03/10/2015)
                MySqlData - 6.9.6 (02/24/2015)
                MySql.Data.Entity - 6.9.6 (02/24/2015)
                MySql.Web - 6.9.6 (02/24/2015)

                NuGet 正确地完成了这项工作并相应地更新了 Web.Config,在“entityFramework”部分填充了所需的任何内容。

                对于 VS2013,它只是从“根本不工作”变为“功能齐全”。 对于VS2012,它可以使用“数据库中的代码优先”,这在应用补丁之前是不可用的。

                我希望我在大约 10 天前就找到了这个,所以希望这仍然可以提供一些帮助。

                【讨论】:

                • 这就像一个魅力......非常感谢!自 3 小时以来一直在努力让它工作......
                • 为了发布我的源代码,我需要做一些特别的事情吗?或者我可以去做一个简单的出版吗?未来的客户端机器会正确还是我需要在那里应用一些补丁?
                【解决方案10】:

                您是否尝试为我的 sql 安装最新的 dot net 连接器? http://dev.mysql.com/tech-resources/articles/mysql-installer-for-windows.html 要么 http://dev.mysql.com/downloads/connector/net/ 取决于你的上下文。

                【讨论】:

                  猜你喜欢
                  • 2018-03-02
                  • 1970-01-01
                  • 2012-12-11
                  • 1970-01-01
                  • 2014-04-04
                  • 2015-11-13
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多