实体框架数据库提供程序兼容性错误 [英] Entity framework database provider compatibility error

查看:53
本文介绍了实体框架数据库提供程序兼容性错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用实体框架按照@

App.config

<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/></configSections><启动><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></启动><实体框架><参数><参数值="mssqllocaldb"/></参数><提供者><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><系统数据><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,文化=中性,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>

解决方案

似乎下面这些 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"></提供者>

这意味着您的机器安装了以前版本的 MySQL Connector .NET,该版本也在配置文件 (6.8.3.0) 中引用,因此您需要卸载以前版本的 MySQL Connector .NET(同时删除其 EF 提供程序字符串) 第一的.然后,确保引用 MySql.Data.dllMySql.Data.Entity.EF6.dll &MySql.Web.dll 库引用到最新版本 (6.9.9.0) 和 app.config 中的 entityFramework 部分应如下所示:

<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6"/><提供者><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"/></提供者></entityFramework>

之后,清理并重建项目.

注意:您可以尝试将 \Program Files\Microsoft Visual Studio [版本号]\Common7\IDE\PrivateAssemblies 中的 MySQL 库替换为 \Program Files\MySQL\MySQL连接器网络 6.9.9\Assemblies\v4.5 如果以前的版本程序集仍然存在.

相关问题:

Visual Studio 2013 中带有 EF6 的 MySQL 连接器

I am trying to use Entity framework to setup an ADO.net model using MYSQL DB following the instructions @https://dev.mysql.com/doc/connector-net/en/connector-net-entityframework60.html,I installed the connector and stuck at the below error,I shared my App.config details aswell,can anyone help me on how to fix this error?

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>

解决方案

Seems that these app.config lines below points directly to the problem source:

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

This means your machine has previous version of MySQL Connector .NET installed which also referenced inside configuration file (6.8.3.0), hence you need to uninstall previous version(s) of MySQL Connector .NET (also remove its EF provider string) first. Then, ensure references of MySql.Data.dll, MySql.Data.Entity.EF6.dll & MySql.Web.dll libraries being referenced to latest version (6.9.9.0) and entityFramework section in app.config should be look like this:

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

Afterwards, clean and rebuild the project.

NB: You may try to replace MySQL libraries in \Program Files\Microsoft Visual Studio [version number]\Common7\IDE\PrivateAssemblies with those in \Program Files\MySQL\MySQL Connector Net 6.9.9\Assemblies\v4.5 if previous version assemblies still exist.

Related issue:

MySQL Connector with EF6 in Visual Studio 2013

这篇关于实体框架数据库提供程序兼容性错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆