Der DbProviderFactory-Typ kann nicht für die Verbindung vom Typ 'MySql.Data.MySqlClient.MySqlConnection' + Mariadb ermittelt werden

Ich habe ein Entity-Projekt mit EF6 erstellt, um MySQL in .net 4.0 zu unterstützen.

Ich habe den MySql Stecker 6.9.9.0 Version meine Maschine installiert

Und ich habe das Projekt erstellt, hinzugefügt reference EF6. Folgende referenceen werden dem Projekt hinzugefügt.

  1. EntityFramework
  2. EntityFramework.Sqlserver
  3. MySql.Data
  4. MySql.Data.Entity.EF6
  5. System.Data
  6. System.Data.Entity

Und erstellt ADO.net Entity Data Model in meinem Projekt.

Ich muss die configurationsdatei aktualisieren:

<configSections> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> </configSections> <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.9.9.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> </providers> </entityFramework> <connectionStrings> <add name="mssql_kpcustomerdbEntities" connectionString="metadata=res://*/CustomerModel.csdl|res://*/CustomerModel.ssdl|res://*/CustomerModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=XYZ-PC\SQLEXPRESS;Initial Catalog=kpcustomerdb;Persist Security Info=True;User ID=sa;Password=johndoe;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" /> <add name="mysql_kpcustomerdbEntities" connectionString="metadata=res://*/CustomerModel.csdl|res://*/CustomerModel.ssdl|res://*/CustomerModel.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=localhost;user id=johndoe;password=johndoe;persistsecurityinfo=True;database=kpcustomerdb&quot;" providerName="System.Data.EntityClient" /> </connectionStrings> 

Und baute eine exe. Die Exe funktioniert wie erwartet auf meiner Maschine. Aber das gleiche exe, wenn auf dem Client-Maschine lief. Ich sehe den folgenden Fehler:

  System.NotSupportedException: Unable to determine the DbProviderFactory type for connection of type 'MySql.Data.MySqlClient.MySqlConnection'. Make sure that the ADO.NET provider is installed or registered in the application config. 

Der einzige Unterschied, den ich sehe, ist Client-Maschine verwendet MariaDB statt MySQL.

Ich habe versucht, die configuration hinzuzufügen, aber nicht funktioniert:

  <system.data> <DbProviderFactories> <remove name="MySQL Data Provider" 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.8.3.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.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /></DbProviderFactories> </system.data> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-6.8.3.0" newVersion="6.8.3.0" /> </dependentAssembly> </assemblyBinding> </runtime> 

Und auch jemand sagt, dies zu Code hinzufügen und Compiler wird EntityFramework.Sqlserver.dll file zu Exe hinzufügen, aber ich sehe immer noch den Fehler.

  private void FixEfProviderServicesProblem() { // The Entity Framework provider type 'System.Data.Entity.Sqlserver.SqlProviderServices, EntityFramework.Sqlserver' // for the 'System.Data.SqlClient' ADO.NET provider could not be loaded. // Make sure the provider assembly is available to the running application. // See http://go.microsoft.com/fwlink/?LinkId=260882 for more information. var instance = System.Data.Entity.Sqlserver.SqlProviderServices.Instance; } 

Kann mir jemand sagen, wie ich das lösen kann?

Jede Hilfe wird wirklich geschätzt.