具有不变名称“MySql.Data.MySqlClient”的 ADO.NET 提供程序未在机器或应用程序配置文件中注册

     2023-02-24     246

关键词:

【中文标题】具有不变名称“MySql.Data.MySqlClient”的 ADO.NET 提供程序未在机器或应用程序配置文件中注册【英文标题】:The ADO.NET provider with invariant name 'MySql.Data.MySqlClient' is either not registered in the machine or application config file 【发布时间】:2016-11-22 00:23:18 【问题描述】:

我有一个使用实体框架 6 到 mysql 服务器的 asp.net 解决方案。

现在我必须在新机器上解决这个问题, 但我有一些问题: 1) 构建解决方案时出现错误:“具有不变名称'MySql.Data.MySqlClient' 的 ADO.NET 提供程序未在机器或应用程序配置文件中注册”。

App.config:

<entityFramework>
  <providers>
    <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.9.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.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
  </DbProviderFactories>
</system.data>  

2) 打开 model.edmx 文件时,我收到消息:“实体模式设计器无法显示您请求的文件”。

我已经在机器上安装了:

1) mysql 连接器/网络 6.9.9 2) Visual Studio 1.2.6 的 mysql 3) mysql 连接器 odbc 5.3.6.

我能做什么?

【问题讨论】:

【参考方案1】:

我遵循了互联网上大多数建议的解决方案,但很抱歉所有都失败了。出现问题是因为 Visual Studio 缺少 MySql 连接器,我通过安装 mysql-connector-net-7.0.4 (https://downloads.mysql.com/archives/c-net/) 解决了它

【讨论】:

我正在使用 VS 2015 和一个全新的 MVC 5 应用程序。我尝试了其他所有方法,但仍然无法查看 edmx。这是我在断断续续尝试解决问题几天后尝试的最后一件事。这成功了。一旦 msi 完成,edmx 图形界面就栩栩如生。非常感谢! @iQalalwa 安装后怎么办?我现在应该采取什么步骤? @faisal 重启你的视觉工作室后一切都必须正常。没有更多的步骤 我在这里问了一个相关问题:Why do I still need the MySQL Connector installed on the computer despite having the proper NuGet packages? 同样,MySQL .NET 连接器未安装到 GAG 中。我使用 MySQL Installer 软件,从那里安装它,然后用 Visual Studio 中的模型设计器打开文件。【参考方案2】:

它适用于 app.config 中的以下部分:

<system.data>
    <DbProviderFactories>
        <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> 

【讨论】:

【参考方案3】:

我的机器上没有安装任何 MySql 连接器。 通过安装 nuget 修复它:MySql.ConnectorNET.Entity

【讨论】:

【参考方案4】:

上述解决方案对我不起作用。但是,受this answer 的启发,我能够通过删除我的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, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d">
        </provider>
      </providers>
    </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>
      </providers>
    </entityFramework>

ETA:正如this follow-up 中所指出的,可能还需要在Web.config 文件中手动编辑MySql.Data 的版本:

<dependentAssembly>
    <assemblyIdentity name="MySql.Data" culture="neutral" publicKeyToken="c5687fc88969c44d" />
    <bindingRedirect oldVersion="0.0.0.0-6.9.9.0" newVersion="6.9.9.0" />
</dependentAssembly>

【讨论】:

【参考方案5】:

我已经做了很多谷歌并找到了解决方案 确保 MySQL.Data.dll、MySQL.Web.dll、MySQL.Data.Entity.dll 和 System.Data.Entity.dll 都被复制到本地(右键单击程序集并确保 Copy Local 设置为 true) 当我尝试调试此问题时,我还在本地添加了以下内容,但这可能是不必要的 System.Data.dll [可能是可选的] System.Data.Entity.Design [可能是可选的]

这是您在 google 或 AppHarbor 上的许多地方都不会读到的步骤! 将以下内容添加到您的 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.4.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
  </DbProviderFactories>
</system.data>

【讨论】:

【参考方案6】:

我能够通过仅将属性“DbConfigurationType”添加到我的上下文类来解决它,我在我从某个地方获得的代码示例中找到了它,但不记得起源很抱歉。它与 Dmitry 的答案相同,但使用属性作为实现

[DbConfigurationType(typeof(MySqlEFConfiguration))]
public class MySqlWeatherContext : DbContext

    public MySqlWeatherContext() : base("context")

    public DbSet<Measurepoint> Measurepoints  get; set; 

这是我的配置文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <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.7.2" />
  </startup>
  <connectionStrings>
    <add name="context" providerName="MySql.Data.MySqlClient" connectionString="" />
  </connectionStrings>
  <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.10.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </providers>
  </entityFramework>
</configuration>

【讨论】:

【参考方案7】:

为了解决这个问题,除了this post中列出的更改之外,我还不得不手动编辑web.configMySql.Data的版本,如下所示:

<dependentAssembly>
    <assemblyIdentity name="MySql.Data" culture="neutral" publicKeyToken="c5687fc88969c44d" />
    <bindingRedirect oldVersion="0.0.0.0-6.9.9.0" newVersion="6.9.9.0" />
</dependentAssembly>

【讨论】:

为什么在安装 v6.9.9 时不会自动更新?这解决了我的问题。很好的收获。【参考方案8】:

您必须添加 codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6" 到您的配置文件中或在应用程序启动时调用 DbConfiguration.SetConfiguration(new MySqlEFConfiguration())

【讨论】:

【参考方案9】:

从引用列表中删除 MySql.Data.Entity.EF6 的旧引用。通过 Nuget 包管理器重新安装,它将工作/

【讨论】:

【参考方案10】:

添加到您的 web.config

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

在当前上下文类中添加 DbConfigurationType 属性

[DbConfigurationType(typeof(MySqlEFConfiguration))]
public class MeuContexto: DbContext  

【讨论】:

c#中简单操作mysql数据库(代码片段)

...中添加该组件的引用,在代码页里输入using MySql.Data.MySqlCl 查看详情

找不到具有不变名称“System.Data.SqlClient”的 ADO.NET 提供程序的实体框架提供程序。

】找不到具有不变名称“System.Data.SqlClient”的ADO.NET提供程序的实体框架提供程序。【英文标题】:NoEntityFrameworkproviderfoundfortheADO.NETproviderwithinvariantname\'System.Data.SqlClient\'.【发布时间】:2014-02-0604:22:24【问题描述】:我们正在使... 查看详情

找不到具有不变名称“System.Data.SqlClient”的 ADO.NET 提供程序的实体框架提供程序。

】找不到具有不变名称“System.Data.SqlClient”的ADO.NET提供程序的实体框架提供程序。【英文标题】:NoEntityFrameworkproviderfoundfortheADO.NETproviderwithinvariantname\'System.Data.SqlClient\'.【发布时间】:2014-02-0604:22:24【问题描述】:我们正在使... 查看详情

找不到具有不变名称“System.Data.SqlClient”的 ADO.NET 提供程序的实体框架提供程序

】找不到具有不变名称“System.Data.SqlClient”的ADO.NET提供程序的实体框架提供程序【英文标题】:NoEntityFrameworkproviderfoundfortheADO.NETproviderwithinvariantname\'System.Data.SqlClient\'【发布时间】:2013-08-2915:05:18【问题描述】:通过nuget下载EF6... 查看详情

错误:找不到具有不变名称“System.Data.SqlClient”的 ADO.NET 提供程序的实体框架提供程序

】错误:找不到具有不变名称“System.Data.SqlClient”的ADO.NET提供程序的实体框架提供程序【英文标题】:Error:NoEntityFrameworkproviderfoundfortheADO.NETproviderwithinvariantname\'System.Data.SqlClient\'【发布时间】:2014-03-0516:08:46【问题描述】:我... 查看详情

具有不变名称“MySql.Data.MySqlClient”的 ADO.NET 提供程序未在机器或应用程序配置文件中注册

】具有不变名称“MySql.Data.MySqlClient”的ADO.NET提供程序未在机器或应用程序配置文件中注册【英文标题】:TheADO.NETproviderwithinvariantname\'MySql.Data.MySqlClient\'iseithernotregisteredinthemachineorapplicationconfigfile【发布时间】:2016-11-2200:23:18【... 查看详情

具有不变文化的反序列化十进制

】具有不变文化的反序列化十进制【英文标题】:Deserializationdecimalwithinvariantculture【发布时间】:2016-07-0210:15:05【问题描述】:是否可以用不变的文化反序列化十进制?我可以用这个模式做到这一点:[XmlIgnore]publicdecimalCurrencyValu... 查看详情

随机重新分配具有条件的组成员身份

】随机重新分配具有条件的组成员身份【英文标题】:randomlyreassigngroupmembershipwithcondition【发布时间】:2022-01-1510:49:15【问题描述】:我有下表:namegroupa1b1c2d2e3f3并且我想通过(i)确保名称不会分配给同一组,并且(ii)组成员身份的... 查看详情

php从数据库中删除值并使其他不变

...我正在做一个小项目。该项目的目标是这样的。我有一个具有id、name、publicname属性的数据库。现在我必须获取公共名称的所有值并在每个复选框中显示它们。现在,当有人 查看详情

一种循环冗余校验算法,它对具有特定非零值的尾随字节数不变

】一种循环冗余校验算法,它对具有特定非零值的尾随字节数不变【英文标题】:Acyclicredundancycheckalgorithmthatisinvarianttothenumberoftrailingbyteswithaparticularnon-zerovalue【发布时间】:2018-12-0320:07:42【问题描述】:假设我有一个任意的字... 查看详情

解决由于具有可能已删除的默认构造函数的不变成员而导致的编译器错误

】解决由于具有可能已删除的默认构造函数的不变成员而导致的编译器错误【英文标题】:Resolvingacompilererrorduetoaninvariantmemberwithapossibledeleteddefaultconstructor【发布时间】:2019-05-0614:02:36【问题描述】:我已经按此顺序提出了一系... 查看详情

glViewport 大小不变

...两个视口,目前在每个角显示4个点。一个视口(左侧)具有灰色角,另一个(右侧)具有红色角。两个视口彼此相邻放置,红色视口故意变小。带有红角的视口也在绘制一个GL_TRIANGLES。你可以在这里看到它们:三角形中的点应... 查看详情

多态:多态指的是编译时类型变化,而运行时类型不变(代码片段)

...译时动态重载;②  运行时多态:指一个对象可以具有多个类型。 对象是客观的,人对对象的认识是主观的。例:Animala=newDog();查看格式名称;Dogd=(Dog)a。声明父类来引用子类。(思考上面的格式) 1packageTomText;23... 查看详情

是否可以将与不同行名关联的值添加在一起,同时保持其他行不变?

...:16:07【问题描述】:我正在尝试将两个值相加,这些值与具有不同名称值的两个不同行相关联。我通常会使用group函数添加值,但是g 查看详情

WPF ListView 突出显示颜色不变

...述】:我有一个ListView,每个Item都有三个TextBlock。第一个具有默认颜色(黑色),其他具有属性Foreground设置为灰色。当我选择一个项目时,第一个TextBlock的颜色变为蓝色,但其他的保持灰色且难以阅读。我希望在选择项目时所... 查看详情

如何获取具有指定名称的 DataMemberAttribute 的属性?

】如何获取具有指定名称的DataMemberAttribute的属性?【英文标题】:HowtogetthepropertythathasaDataMemberAttributewithaspecifiedname?【发布时间】:2013-01-1806:04:54【问题描述】:我怎样才能反射性地获取具有给定名称的DataMember的属性(假设每... 查看详情

SQL查询从具有相同列“名称”的其他两个表中获取具有不同值的单列“名称”[关闭]

】SQL查询从具有相同列“名称”的其他两个表中获取具有不同值的单列“名称”[关闭]【英文标题】:SQLQuerytogetasinglecolumn\'name\'withdistinctvaluesfromtwoothertableshavingsamecolumn\'name\'[closed]【发布时间】:2018-03-2621:09:58【问题描述】:有... 查看详情

使用 Jest 模拟名称空间和具有相同名称的函数

】使用Jest模拟名称空间和具有相同名称的函数【英文标题】:MockanamespaceandafunctionwithsamenameusingJest【发布时间】:2017-12-2320:12:43【问题描述】:我正在使用的库的结构为declarenamespacefoofunctionbar();;declarenamespacefoo.barfunctionbaz();;所以... 查看详情