J'ai créé une application Web asp.net qui devrait se connecter à une base de données mysql.
J'utilise entity framework 6 avec un modèle de données d'entité ado.net. J'ai également suivi le tutoriel suivant: https://dev.mysql.com/doc/connectors/en/connector-net-entityframework60.html#connector-net-ef6-config
Cependant, en appelant: DbConfiguration.SetConfiguration(new MySqlEFConfiguration());
provoque le blocage de mon application. Cela n'a probablement rien à voir avec cette méthode spécifique, car la création d'un DBContext bloque également l'application.
Des idées ce qui cause cette erreur?
Web.config:
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.Microsoft.com/fwlink/?LinkID=237468 -->
<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"/>
<provider invariantName="System.Data.SqlClient"
type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/>
</providers>
</entityFramework>
<connectionStrings><add name="DatabaseEntities" connectionString="metadata=res://*/Database.Model.csdl|res://*/Database.Model.ssdl|res://*/Database.Model.msl;provider=MySql.Data.MySqlClient;provider connection string=""" providerName="System.Data.EntityClient" /></connectionStrings><system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<add description=".Net Framework Data Provider for MySQL" invariant="MySql.Data.MySqlClient" name="MySQL Data Provider" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.10.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
Erreur complète:
Règles de sécurité d'héritage violées par le type: 'MySql.Data.Entity.MySqlEFConfiguration'. Les types dérivés doivent soit correspondre à l'accessibilité de sécurité du type de base ou être inférieur accessible.
Description: une exception non gérée s'est produite lors de l'exécution de la demande Web en cours. Veuillez revoir la trace de la pile pour plus d'informations sur l'erreur et son origine dans le fichier code.
Détails des exceptions: System.TypeLoadException: les règles de sécurité d'héritage ont été violées par le type: 'MySql.Data.Entity.MySqlEFConfiguration'. Les types dérivés doivent soit correspondre à l'accessibilité de sécurité du type de base ou être inférieur accessible.
J'ai rétrogradé MySql.Data.Entity.EF6 vers une version antérieure et cela a résolu mon problème.
Le déclassement de MySql.Data.Entity de la version 6.10.x à 6.9.10 peut résoudre le problème. Il a résolu le mien
J'ai eu quelques problèmes d'instabilité horribles avec 6.9.10. Il semble également que cela a été retiré de NuGet. Sous la charge lourde je recevais "des erreurs de base de données non trouvées" sporadiquement.
Essayez 6.9.11 à la place. Cela semble stable pour moi. Et son disponible sur NuGet.
Je l'ai fait et cela a fonctionné pour moi
Installez les dernières versions de entityframwork et de mysql.data et mysql.data.entity à partir du gestionnaire de paquets Nuget.
Créez votre modèle databasefirst autogenerate
J'ai eu le même problème après la mise à niveau des paquets MySql NuGet de 6.9.8 à 6.10.6 dans VS 2017 Community. J'ai suivi les instructions de la réponse acceptée et rétrogradé à 6.9.x l'a corrigé. Après une enquête plus approfondie, Oracle a corrigé le bogue dans la prochaine version 6.10.7 ( https://bugs.mysql.com/bug.php?id=89134 ).
En bref, jusqu’à la sortie de 6.10.7, rétrogradez à 6.9.x! Je suis revenu en utilisant le gestionnaire de paquets Nuget et je n'ai rien changé d'autre pour que cela fonctionne.
La mise à niveau du paquet Nuget vers la version 6.10.8 a résolu ce problème pour moi.
La même chose pour moi avec VS2017. J'ai utilisé MySql.Data.Entity v6.9.10 .
Avant cela, j’avais également installé le connecteur mysql pour .Net version 6.9.10 .
web.config
en conséquence: Ahh ne pas oublier j'ai ajouté aussi
DbConfiguration.SetConfiguration(new MySqlEFConfiguration())
dans mon application, démarrez.
et cela a finalement fonctionné: D