1
votes

Impossible de se connecter à la base de données MySQL avec Visual Studio 2019

J'essaie de configurer la MySQL données MySQL dans dot net application dot net . Pour cela, je l'ai installé.

  1. MySQL pour Visual Studio 1.2.9
  2. Connecteur / NET 8.0.22
  3. Entity Framework 6 (EF6)
  4. MySql.Data.EntityFramework version 8.0.22 via nuget

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

entrez la description de l'image ici

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.


0 commentaires

3 Réponses :


3
votes

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.


0 commentaires

0
votes

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.


0 commentaires

0
votes

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:

  1. le gestionnaire de packages Install-Package MySql.Data.EntityFramework -Version 8.0.22
  2. ligne de commande dotnet add package MySql.Data.EntityFramework -Version 8.0.22
  3. dans le gestionnaire de packages nuget de visual studio

vous pouvez continuer à découvrir la source mysql il y a beaucoup d'informations utiles.


0 commentaires