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

Ari*_*ela 13 c# mysql connector-net entity-framework-6

我有一个使用实体框架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>  
Run Code Online (Sandbox Code Playgroud)

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

错误截图

我在机器上安装了:

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

我能做什么?

小智 15

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


aer*_*son 7

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

在此输入图像描述


ale*_*ian 6

上述解决方案对我不起作用。但是,受此答案的启发,我能够通过删除文件entityFramework中标签下的版本信息来解决此问题Web.config

    <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>
Run Code Online (Sandbox Code Playgroud)

变成:

    <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>
Run Code Online (Sandbox Code Playgroud)

ETA:正如本后续文章中所指出的,可能还需要手动编辑文件MySql.Data中的版本Web.config

<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>
Run Code Online (Sandbox Code Playgroud)


小智 5

它对我有用,适用于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> 
Run Code Online (Sandbox Code Playgroud)


Ida*_*ter 1

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