繁体   English   中英

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

[英]MySQL Connector with EF6 in Visual Studio 2013

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

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

您的项目引用了最新版本的Entity Framework; 但是,无法为您的数据连接找到与此版本兼容的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或其他所需的程序。

谁能发现我做错了什么?

我遇到过同样的问题。 安装后:

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

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

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

关闭Visual Studio后,我将这些文件替换为“ C:\\ Program Files(x86)\\ MySQL \\ MySQL Connector Net 6.9.5 \\ Assemblies \\ v4.5 ”中的文件,现在它可以工作了!

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

这对我有用,无需重新安装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标记及其子标记,并将其替换为上面的剪切标记。 如果删除任何“额外”标签,您的项目可能会遇到更大的问题,就像我一样。 X)

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

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

只需添加到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实体数据模型之前,请不要忘记重建解决方案

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

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

  1. 右键单击解决方案(解决方案资源管理器中的顶级)。
  2. 管理Nuget包以获得解决方案。
  3. 转到已安装选项卡。
  4. 对于所有与EntityFramework相关的包(MySql.Data,MySql.Data.Entities,MySql.ConnectorNET.Entity和MySql.ConnectorNET.Data),选择它们,然后选择“管理”按钮。
  5. 为所有项目启用每个包。

我在这里注意到他有两个额外的包,你没有提到“MySql.ConnectorNET.Entity”和“MySql.ConnectorNet.Data”。 可能是您缺少这些并且需要使用Entity Framework 6.1.1

(来源: 找不到实体框架提供商

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

我有一个工作项目与MySQL连接器库和EF6 v6.0.0版本6.8.3。 我记得这个错误,我想我解决了手动向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站点下载了软件包,并添加了两个对Project的引用:MySql.Data和MySql.Data.Entity.EF6,两者都是6.8.3versión(我注意到你使用的是不同的版本)这些文件...)。

我通过Nuget将EF6(v 6.0.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>

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

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

MySql.Data.dll

MySql.Data.Entity.EF6.dll

MySql.Web.dll

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

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

  1. 添加项目后,使用nuget console通过install-package EntityFramework添加EntityFramework6.1.3
  2. 用户控制台通过MySQL.Data.Entity添加MySQL引用
  3. 打开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> 
  4. 此时,请确保重建项目。 (必须的)

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

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

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

在nuget命令行中执行

update-package -reinstall -ignoreDependencies

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

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

 <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>

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一起运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM