实体框架数据库提供程序兼容性错误。

3

我正在尝试使用Entity Framework在MYSQL数据库中设置ADO.net模型,按照https://dev.mysql.com/doc/connector-net/en/connector-net-entityframework60.html,此处的说明安装了连接器,但遇到以下错误,我也分享了我的App.config细节,请问有人能帮我解决这个错误吗?

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>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <entityFramework>
      <parameters>
        <parameter value="mssqllocaldb" />
      </parameters>
    <providers>
      <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6"></provider>
      <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.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider><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>
<system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient" name="MySQL Data Provider" />
      <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.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    <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.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /></DbProviderFactories>
  </system.data></configuration>
4个回答

2

2

看起来下面这几行app.config直接指向了问题的源头:

<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>

<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>

这意味着您的计算机已安装了先前版本的MySQL Connector .NET,并且在配置文件(6.8.3.0)中也引用了它,因此您需要首先卸载旧版本的MySQL Connector .NET(还要删除其EF提供程序字符串)。然后,确保将MySql.Data.dllMySql.Data.Entity.EF6.dllMySql.Web.dll库的引用更新到最新版本(6.9.9.0),并且app.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>

然后,清理并重新构建项目。

注意:如果以前版本的程序集仍存在,请尝试在\Program Files\Microsoft Visual Studio [version number]\Common7\IDE\PrivateAssemblies中使用\Program Files\MySQL\MySQL Connector Net 6.9.9\Assemblies\v4.5中的MySQL库替换它们。

相关问题:

Visual Studio 2013中与EF6一起使用MySQL Connector


2

在VS2019中遇到了同样的问题。

已安装版本:

  • Entity Framework 6.4.0
  • Mysql for VStudio 1.2.9
  • Mysql Connector/net 8.0.19
  • Nuget: Mysql.Data.EntityFramework 8.0.19
  • Nuget: Mysql.Data 8.0.19

解决方案: 安装这些包后,关闭并重新启动Visual Studio,重新安装包等操作仍然出现相同的错误,解决方法是清理解决方案并重新构建它。之后,向导就能正常工作了。

重要的是安装与Mysql相同版本的Nuget包和连接器。还要检查app.config版本。我的版本如下:

<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.EntityFramework, Version=8.0.19.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>

0
Install MySql for VS 1.2.9
Install MySql Connector 6.8.3

Add these Nuget Packages To your Project:

EntityFramework    //  6.4
Mysql.Data      //  6.8.8
Mysql.Data.Entities   // 6.8.3  
Mysql.Web  //   6.8.8

in Solution Explorer edit App.config:( Add or Replace):

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



    rebiuld and nothing more 

2
请考虑解释您所做的事情以提供帮助。 - Bob White

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接