The ADO.NET provider with invariant name 'MySql.Data.MySqlClient' is either not registered in the machine or application config file

我们两清 提交于 2019-12-01 02:44:54

I followed most suggested solutions in the internet but for sorry all were failed. The problem occurs because visual studio lacks for MySql connector and I have solved it by installing mysql-connector-net-7.0.4 (https://downloads.mysql.com/archives/c-net/)

I didn't have any MySql connector installed ony my machine. Fixed it by installing nuget: MySql.ConnectorNET.Entity

alexanian

The above solutions didn't work for me. However, inspired by this answer, I was able to resolve this problem by removing version information under the entityFramework tag in my Web.config file:

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

becomes:

    <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: As pointed out in this follow-up it may also be necessary to manually edit the version of MySql.Data in the Web.config file:

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

It works for me with the following section in 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> 

I have done lot of google and find the solution Ensure MySQL.Data.dll, MySQL.Web.dll, MySQL.Data.Entity.dll, and System.Data.Entity.dll are all being copied local (right click on assembly and ensure Copy Local is set to true) I also added the following locally as I tried to debug this problem but it was probably unnecessary System.Data.dll [probably optional] System.Data.Entity.Design [probably optional]

And here's the step you wont read about in many places on google or on AppHarbor! Add the following to your web.config file:

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

In order to solve this problem, in addition to the changes outlined in this post, I also had to manually edit the version of MySql.Data in web.config like so:

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

Remove the old reference of MySql.Data.Entity.EF6 from the list of references. Reinstall via Nuget Package manager and it will work/

You must add codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6" to in your configuration file or call DbConfiguration.SetConfiguration(new MySqlEFConfiguration()) at the application start up.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!