J'essaie de me connecter à MySQL via une application Web MVC C # .NET.
Le problème est que, lorsque j'essaie d'ajouter un modèle de données d'entité ADO.NET, généré à partir de la base de données, en fonction de ma connexion MySQL, le message d'erreur suivant s'affiche:
Votre projet fait référence à la dernière version d’Entity Framework; Cependant, un fournisseur de base de données Entity Framework compatible avec cette version est introuvable pour votre connexion de données . Quittez cet assistant, installez un fournisseur compatible, et reconstruisez votre projet avant d'effectuer cette action
J'utilise les logiciels, mises à niveau et add-on suivants:
Forfaits NuGet:
Mon bloc web.config, entityFramework:
..
</system.webServer>
<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" />
</providers>
</entityFramework>
<runtime>
..
J'ai examiné toutes les autres solutions que je pouvais trouver ici sur SO et généralement via google. Toutes les ont essayées. Aucune solution ne semble avoir fonctionné ou n'a été utilisée pour des versions très différentes de Connector/NET ou d'une autre version du logiciel. programmes nécessaires.
Quelqu'un peut-il repérer ce que je fais mal?
La solution de base consiste à réinstaller MySQL et VisualStudio y compris Entity et .NET.
Pour une raison quelconque, je ne suis pas sûr de savoir pourquoi, le processus d'installation corrompt les DLL, ou du moins c'est l'expérience que j'ai et celle d'autres collègues. Notre solution a été d'essayer tout ce qui précède sans résultat. Nous avons donc essayé de réinstaller le système et cela a fonctionné. Alors essayez ça :)
J'ai eu le même problème. Après avoir installé:
Je ne voulais pas réinstaller Visual Studio. Après quelques tests, j’ai trouvé que le dossier " C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies " contenait les anciennes versions du fichiers suivants:
Après la fermeture de Visual Studio, j'ai remplacé ces fichiers par ceux de " C:\Program Files (x86)\MySQL\Connecteur MySQL Net 6.9.5\Assemblies\v4.5 ", et maintenant cela fonctionne!
Remarque: remplacez 6.9.5 dans le nom du sous-dossier ci-dessus par la version actuelle installée sur votre système.
Cela a fonctionné pour moi SANS la réinstallation de Visual Studio ou quoi que ce soit.
<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" />
</providers>
</entityFramework>
NOTE : Assurez-vous de ne supprimer que la balise entityFramework et ses enfants, et remplacez-la par celle ci-dessus. Si vous supprimez des balises "extra", vous risquez d'avoir des problèmes encore plus graves avec votre projet, comme je l'ai fait. X)
J'ai rencontré le même problème. Heureusement, je l'ai réparé. MySql.Data.dll ou MySql.Data.Entity.EF6.dll n'est pas compatible avec la version EF 6.1 up. Ce que j'ai fait, j'ai installé EF version 6.0.0.0 dans la console Nuget avec cette commande -> install-package entityframework - version 6.0.0.0 et le problème a été résolu.
Ajoutez simplement à web.config:
<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" />
</DbProviderFactories>
</system.data>
N'oubliez pas de reconstruire la solution avant d'essayer d'ajouter à nouveau un modèle de données d'entité ADO.NET, généré à partir de la base de données.
Maintenant, ce n'est pas un problème que j'ai moi-même, mais j'ai trouvé la solution possible suivante:
Ce que j'ai remarqué ici, c'est qu'il avait deux paquets supplémentaires que vous n'avez pas mentionnés "MySql.ConnectorNET.Entity" et "MySql.ConnectorNet.Data". Il se peut que vous les manquiez et qu’ils soient nécessaires pour utiliser Entity Framework 6.1.1.
(Source: Aucun fournisseur de structure d'entité trouvé pour )
Si vous devez utiliser EntityFramework avec une base de données mysql, il vous suffit d'installer une version plus ancienne d'EntityFramework telle que la version 5.0 avec la console du gestionnaire de packages. Écrire Install-Package EntityFramework-Version 5.0.0. Enjoy . https://www.nuget.org/packages/EntityFramework/5.0.0
J'utilisais la communauté Visual Studio 2013. Je voulais faire du code d'abord sur MySQL db. J'avais le même problème de "Votre projet fait référence à la dernière version d'Entity Framework; ..." Ce qui a résolu mon problème était constitué d'étapes simples décrites ci-dessous.
Ouvrez votre fichier Web.config ou App.config pour modifier les sections entityframework et system.data comme indiqué ci-dessous.
<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.7.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.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
À ce stade, assurez-vous de reconstruire votre projet. (C'est un impératif)
Ajoutez maintenant ADO Entity Models et choisissez MySQL et cela fonctionne.
En passant, les plugins que j'utilise sont M4VS 1.2.3 et MySQL .NET Connector 6.9.7
J'utilisais tout simplement Nuget pour faire référence à MySQL.dll (etc.) et il faisait automatiquement référence aux dll .net 4.0. Je viens de changer les références à 4.5 et cela a fonctionné.
faire en ligne de commande nuget
update-package -reinstall -ignoreDependencies
et reconstruire la solution ce travail ou moi
tout d’abord, réinstallez vs 1.2.3 en ajoutant les références suivantes à votre projet ou vérifiez ses versions:
MySql.Data.dll
MySql.Data.Entity.EF6.dll
MySql.Web.dll
Supprimez la balise entityFramework par défaut dans App.config ou Web.config Pour reconstruire votre projet, vous pouvez ajouter un modèle de données d'entité ADO.NET.
La solution consiste à ajouter ceci à app.config
/web.config
sur le projet que vous essayez d'ajouter/modifier un modèle de données.
<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.9.5.0,
Culture=neutral,
PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
changez de version en fonction de votre connecteur.
J'ai un projet de travail avec la version 6.8.3 de MySQL Connector Libraries et EF6 v6.0.0. Je me souviens de cette erreur, je pense avoir résolu d'ajouter une ligne manuellement à app.config.
Je vous énumère les lignes de mon app.config relatives à EF6 et à la configuration de MySQL, qui sont différentes des vôtres. Cela vous aidera peut-être:
<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="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
</providers>
</entityFramework>
J'avais installé MySQL Connector Net 6.8.3 avec le paquet téléchargé à partir du site MySQL et ajouté deux références au projet: MySql.Data et MySql.Data.Entity.EF6, version 6.8.3 (je remarque que vous utilisez des versions différentes de ces fichiers ...).
J'ai ajouté EF6 (v 6.0.0) au projet via Nuget.
Ne sont pas les dernières versions, mais espérons que cela aide.
Il y a encore des problèmes en 2018 ...
Scénario DB-first: pour Visual Studio 2017 Community Edition, j'ai trouvé une combinaison de travail:
Le scénario Code-First que je peux exécuter à l'aide de la documentation officielle https://dev.mysql.com/doc/connector-net/en/connector-net-entityframework60.html Avec le dernier connecteur v .8.0.11 et EF6.
J'ai ajouté ceci qui l'a résolu pour moi:
<runtime>
<assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>