J'essaie de configurer la MySQL
données MySQL
dans dot net
application dot net
. Pour cela, je l'ai installé.
App.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" /> <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, Version=8.0.22.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"> </provider></providers>
Lorsque j'essaie d'ajouter la base de données, j'obtiens une erreur ci-dessous
J'ai essayé presque toutes les solutions de la pile mais rien ne résout le problème.
Toute aide serait très appréciée.
3 Réponses :
Il s'agit d'un problème clair et l'erreur dit simplement:
Le fournisseur de base de données Entity Framework n'est pas compatible avec cette version d'Entity Framework
À titre de référence , considérez attentivement les étapes du connecteur net entityframework60 car il décrit deux types de projets .net (.net et .net core) pour la connexion à la base de données MySQL. Dans votre cas, suivez les exigences minimales pour EF6 sous Windows uniquement et la note relative à la version et à la compatibilité du .NET Framework.
Faites attention à ce que vous avez référencé et à ce que vous avez installé en comparant les fichiers de configuration avec les références d'assembly dans votre projet. Je ne sais pas dans quelle mesure vous contrôlez les dépendances du projet. Si vous comparez la section Configuration, vous découvrirez qu'elle est complètement différente de la vôtre . Et il peut y avoir d'autres erreurs indésirables possibles que nous ne contrôlons pas loin de vous et nous ne pouvons pas reproduire le problème.
Enfin, vérifiez ce que vous avez à l'intérieur des références d'assemblage et des fichiers de configuration . Après avoir apporté des modifications profondes, vous devrez peut-être redémarrer Visual Studio afin de les suivre à confirmer ou non.
Comme l'erreur l'indique, vous utilisez un fournisseur incompatible. La cause première est probablement que vous ayez des fournisseurs MySql.Data.MySqlClient
double, un chargement à partir de l'assembly MySql.Data.Entity.EF6
et l'autre chargement à partir de l'assembly MySql.Data.EntityFramework
.
<configuration> <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=8.0.22.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> </DbProviderFactories> </system.data> <configuration>
Selon la documentation, la section de votre structure d'entité devrait ressembler à ceci.
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"/>
De plus, il semble que votre fabrique de connexions par défaut utilise le mauvais assemblage et type:
<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" />
La documentation montre que System.Data.Entity.Infrastructure.SqlConnectionFactory
de l'assembly EntityFramework doit être utilisé à la place:
<entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"/> <providers> <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.EntityFramework"/> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/> </providers> </entityFramework>
Enregistrez également le DbProviderFactories
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" /> ... <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.EntityFramework, Version=8.0.22.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d">
Notez de toujours mettre à jour le numéro de version pour qu'il corresponde à celui de l'assembly MySql.Data.dll que vous utilisez.
Comme le message d'erreur le décrit, vous avez un connecteur mysql incompatible, essayez de tout supprimer et de créer à nouveau. Vous pouvez essayer depuis la source directement @ la source mysql
essayez de changer votre configuration en
<connectionStrings> <add name="MyContext" providerName="MySql.Data.MySqlClient" connectionString="server=yourserver;port=3306;database=mycontext;uid=root;password=******** "/> </connectionStrings> <entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"/> <providers> <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.EntityFramework"/> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/> </providers> </entityFramework>
après avoir ajouté le package mysql MySql.Data.EntityFramework
vous pouvez ajouter à partir de:
Install-Package MySql.Data.EntityFramework -Version 8.0.22
dotnet add package MySql.Data.EntityFramework -Version 8.0.22
vous pouvez continuer à découvrir la source mysql il y a beaucoup d'informations utiles.