Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有固定名称的ADO.NET提供程序';MySql.Data.MySqlClient';未在计算机或应用程序配置文件中注册_C#_Mysql_Entity Framework 6_Connector Net - Fatal编程技术网

C# 具有固定名称的ADO.NET提供程序';MySql.Data.MySqlClient';未在计算机或应用程序配置文件中注册

C# 具有固定名称的ADO.NET提供程序';MySql.Data.MySqlClient';未在计算机或应用程序配置文件中注册,c#,mysql,entity-framework-6,connector-net,C#,Mysql,Entity Framework 6,Connector Net,我有一个使用EntityFramework6到mysql服务器的asp.net解决方案 现在我必须在一台新机器上开发该解决方案, 但我有一些问题: 1) 构建解决方案时,出现错误:“具有固定名称'MySql.Data.MySqlClient'的ADO.NET提供程序未在计算机或应用程序配置文件中注册”。 App.config: <entityFramework> <providers> <provider invariantName="MySql.Da

我有一个使用EntityFramework6到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>  

我已在机器上安装:

1) mysql连接器/net 6.9.9
2) mysql for visual studio 1.2.6
3) mysql连接器odbc 5.3.6


我能做什么?

从引用列表中删除MySql.Data.Entity.EF6的旧引用。通过Nuget Package manager重新安装,它将正常工作/

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


我遵循了互联网上大多数建议的解决方案,但很抱歉,所有方案都失败了。出现这个问题是因为visual studio缺少MySql连接器,我通过安装MySql-connector-net-7.0.4()解决了这个问题。

上述解决方案对我不起作用。然而,受启发,我通过删除我的
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>
<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>

为了解决这个问题,除了中概述的更改外,我还必须在
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>

它适用于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> 

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

这是你在谷歌或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>
<?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>

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

我能够通过只向上下文类添加属性“DbConfigurationType”来解决这个问题,我在某个地方的一个代码样本中找到了它,但是我想不起它的来源。这与Dmitry的答案相同,但使用属性作为实现

[DbConfigurationType(typeof(MySqlEFConfiguration))]
public class MySqlWeatherContext : DbContext
{
    public MySqlWeatherContext() : base("context"){}

    public DbSet<Measurepoint> Measurepoints { get; set; }
}
[DbConfigurationType(typeof(MySqlEFConfiguration))]
公共类MySqlWeatherContext:DbContext
{
public MySqlWeatherContext():基(“上下文”){}
公共数据库集度量点{get;set;}
}
这是我的配置文件:

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


我正在使用VS 2015和绿地MVC 5应用程序。我尝试了其他方法,但仍然无法查看edmx。这是我在断断续续地试图解决这个问题几天后做的最后一件事。这就成功了。msi一完成,edmx图形界面就开始活跃起来。非常感谢@iQalalwa安装后要做什么?我现在应该采取什么措施?@faisal重启visual studio后,一切都必须正常。没有更多的步骤,我在这里问了一个相关的问题:这里也一样,MySQL.NET连接器没有安装到GAG中。我使用了MySQL安装软件,从那里安装,然后Visual Studio中的模型设计器打开了该文件。为什么在安装v6.9.9时不会自动更新?这解决了我的问题。接得好。谢谢,属性解决了我的问题!