在Visual Studio 2013中使用EF6的MySQL连接器

时间:2014-10-09 13:58:57

标签: c# mysql asp.net-mvc entity-framework

我正在尝试通过C#.NET Web MVC应用程序连接到MySQL。

我的问题是,当我尝试根据我的MySQL连接添加从数据库生成的ADO.NET实体数据模型时,收到以下错误消息:

  

您的项目引用了最新版本的Entity Framework;   但是,实体框架数据库提供程序兼容   找不到此版本的数据连接。   退出此向导,安装兼容的提供程序,   并在执行此操作之前重建项目

我正在运行以下软件,升级和升级附加组件:

  • Visual Studio 2013
  • MySQL Server v5.6.21
  • MySQL For Visual Studio v1.2.3
  • Connector / NET v6.9.4

NuGet包:

  • EntityFramework v6.1.1
  • MySQL.Data v6.9.3
  • MySQL.Data.Entities v6.8.3.0
  • SQL.Web v6.9.3

我的web.config,entityFramework块:

    ..
</system.webServer>
<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" />
  </providers>
</entityFramework>
<runtime>
    ..

我已经查看了我可以在这里找到的所有其他解决方案,通常是通过谷歌,尝试了所有这些解决方案似乎没有任何解决方案似乎已经工作或已经用于非常不同版本的Connector / NET或其他程序需要的。

有人能发现我做错了吗?

15 个答案:

答案 0 :(得分:23)

我有同样的问题。安装后:

  • Visual Studio 2013社区版
  • MySQL for Visual Studio 1.2.3
  • MySQL Connector .NET 6.9.5

我不想重新安装Visual Studio,所以经过一些测试后,我发现文件夹&#34; C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ PrivateAssemblies &#34;包含以下文件的旧版本:

  • MySql.Data.dll
  • MySql.Data.Entity.EF6.dll
  • MySql.Web.dll

关闭Visual Studio后,我将这些文件替换为&#34; C:\ Program Files(x86)\ MySQL \ MySQL Connector Net 6.9.5 \ Assemblies \ v4.5 & #34;,现在它有效!

注意:在上面的子文件夹名称中替换6.9.5,并在系统中安装实际版本。

答案 1 :(得分:18)

这对我有用,无需重新安装Visual Studio或任何其他任何东西。

  • 安装最新的MySQL visual studio插件和MySQL连接器网
  • 删除了 App.config或Web.config中的entityFramework标记及其所有子标记。
  • 使用以下代码替换
<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" />
    <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
  </providers>
</entityFramework>
  • 添加了 MySql.Data.dll,MySql.Data.Entity.EF6.dll和MySql.Web.dll(如果不是WPF应用)对项目的引用。
  • 重建项目,然后添加了ado.net模型。

注意 :确保只删除 entityFramework 标记及其子标记,并将其替换为上面的剪切标记。如果您删除任何&#34;额外&#34;标签你可能会有更大的问题,就像我做的那样。 X)

答案 2 :(得分:8)

基本解决方案是重新安装MySQL和VisualStudio ,包括实体和.NET。

出于某种原因,我不确定为什么,安装过程会破坏DLL,或者至少那是我和其他同事的经历。我们的解决方案一直尝试以上所有方面都无济于事。所以最后我们尝试重新安装,并且它有效。所以试试:))

答案 3 :(得分:3)

只需添加到web.config:

   <system.data>
    <DbProviderFactories>
      <clear />
      <add name="MySQL Data Provider"
           invariant="MySql.Data.MySqlClient"
           description=".Net Framework Data Provider for MySQL"
           type="MySql.Data.MySqlClient.MySqlClientFactory, 
                 MySql.Data" />
    </DbProviderFactories>
   </system.data>

在尝试再次添加从Database生成的ADO.NET实体数据模型之前,不要忘记重建解决方案

答案 4 :(得分:3)

我遇到了同样的问题。幸运的是,我修复了它。 MySql.Data.dll或MySql.Data.Entity.EF6.dll与EF 6.1 up版本不兼容。我做了什么,我通过这个命令在nuget控制台中安装了EF版本6.0.0.0 - &gt; install-package entityframework -version 6.0.0.0并解决了这个问题。

答案 5 :(得分:1)

现在这不是我自己的问题,但我找到了以下可能的解决方案:

  1. 右键单击解决方案(解决方案资源管理器中的顶级)。
  2. 管理Nuget包以获得解决方案。
  3. 转到已安装标签。
  4. 对于所有与EntityFramework相关的包(MySql.Data,MySql.Data.Entities,MySql.ConnectorNET.Entity和MySql.ConnectorNET.Data),选择它们,然后选择&#34; Manage&#34;按钮。
  5. 为所有项目启用每个包。
  6. 我在这里注意到他有两个额外的套餐你还没有提到&#34; MySql.ConnectorNET.Entity&#34;和&#34; MySql.ConnectorNet.Data&#34;。可能是您缺少这些并且需要使用Entity Framework 6.1.1

    (资料来源:No Entity Framework Provider Found For

答案 6 :(得分:1)

如果您需要将EntityFramework与mysql数据库一起使用,您只需要使用包管理器控制台安装较旧版本的EntityFramework,例如v 5.0。编写Install-Package EntityFramework -Version 5.0.0。 请享用。 https://www.nuget.org/packages/EntityFramework/5.0.0

答案 7 :(得分:0)

我有一个工作项目,MySQL连接器库版本6.8.3和EF6 v6.0.0。我记得这个错误,我想我解决了手动为app.config添加一些行。

我列出了我的app.config中与EF6和MySQL配置相关的行,与你的不同,也许它可以帮到你:

<configSections>
    ...

    <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.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
    </providers>
</entityFramework>

我安装了MySQL Connector Net 6.8.3,并从MySQL站点下载了软件包,并添加了两个对项目的引用:MySql.Data和MySql.Data.Entity.EF6,两者都是6.8.3versión(我注意到你是使用此文件的不同版本......)。

我通过Nuget将EF6(v 6.0.0)添加到项目中。

不是最新版本,但希望这有帮助。

答案 8 :(得分:0)

解决方法是将此项添加到您尝试添加/修改数据模型的项目的app.config / web.config

  <system.data>
    <DbProviderFactories>
      <clear />
      <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.5.0, 
                 Culture=neutral, 
                 PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
  </system.data>

根据您的连接器更改版本。

答案 9 :(得分:0)

首先,重新安装vs 1.2.3,将以下引用添加到您的项目中或检查它的版本:

MySql.Data.dll

MySql.Data.Entity.EF6.dll

MySql.Web.dll

删除App.config或Web.config中的默认entityFramework标记 重建项目,可以添加ADO.NET实体数据模型

答案 10 :(得分:0)

我使用的是visual studio 2013社区。想在MySQL db上做Code First。我遇到了同样的问题&#34;您的项目引用了最新版本的Entity Framework; ...&#34; 解决了我的问题的原因是下面给出的简单步骤。

  1. 添加项目后,使用nuget console添加EntityFramework6.1.3,通过install-package EntityFramework
  2. 用户控制台,通过MySQL.Data.Entity
  3. 添加MySQL引用
  4. 打开您的Web.config或App.config以更改entityframework和system.data部分,如下所示

            <entityFramework>
            <defaultConnectionFactory  type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"  />
            <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.9.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d">
            </provider>
            </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.9.7.0,       Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
            </DbProviderFactories>
        </system.data>
    
  5. 此时请确保重建项目。 (这是必须的)

  6. 现在添加ADO实体模型并选择MySQL,它可以工作。

  7. 顺便说一句,我使用的插件是M4VS 1.2.3和MySQL .NET Connector 6.9.7

答案 11 :(得分:0)

很简单,我使用Nuget引用MySQL.dll(等),它自动引用了.net 4.0 dll。我刚刚将参考文献更改为4.5并且有效。

答案 12 :(得分:0)

在nuget命令行中执行

update-package -reinstall -ignoreDependencies

并重建解决方案 这项工作还是我

答案 13 :(得分:0)

我添加了这个为我解决的问题:

 <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

答案 14 :(得分:0)

2018年仍有问题......

DB-first场景:对于Visual Studio 2017社区版,我找到了工作组合:

  • MySQL for Visual Studio 1.2.8
  • MySQL Connector .NET 6.9.9
  • EntityFramework 5.0.0(我为v6.x尝试了不同的组合而没有运气)

Code-First场景我可以使用官方文档运行 https://dev.mysql.com/doc/connector-net/en/connector-net-entityframework60.html 使用最新的Connector v.8.0.11和EF6。