Connexion MySQL dans ASP.NET MVC 4 et Entity Framework 5.0 - plusieurs DbProviderFactories
J'ai un ASP.NET l'application que je voudrais télécharger un hôte qui offre une base de données MySQL. Je suis à l'aide de Visual Studio 2012 .NET 4.5, Entity Framework 5.0, et j'ai installé MySQL pour Visual Studio 1.0.2. J'ai essayé de vous connecter à un serveur MySQL local, mais j'ai rencontré quelques problèmes.
Au début, j'ai référencé MySql.Data
et MySql.Data.Entity
à la version 6.6.5.0 dans mon projet. Mais quand j'ai essayé de faire Update-Database
dans le gestionnaire de paquets de la console, j'ai eu l'erreur suivante:
System.DateTime System.Data.Entity.Migrations.Model.InsertHistoryOperation.get_CreatedOn()
Ce semble être un problème avec Entity Framework 5.0 et les versions antérieures de Connecteur/.Net - la base de données MySQL connector pour visual studio. Depuis que le processus a été l'un de la découverte, je ne peut malheureusement pas se rappeler comment mon projet est venu de référence MySql.Data
et MySql.Data.Entity
version 6.6.5.0.
J'ai supprimé les références, puis téléchargé et référencé les mêmes assemblées en version 6.7.4.0, à l'aide de NuGet. Cela a résolu l'erreur que j'ai eu avant, mais maintenant Update-Database
me donne l'erreur suivante:
Could not load file or assembly 'MySql.Data, Version=6.6.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d' or one of its dependencies.
The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
J'ai résolu ce problème par l'inclusion d'une DbProviderFactory
dans mon Web.Fichier de 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=6.7.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
Si je quitte la remove
tag, j'obtiens l'erreur:
Column 'InvariantName' is constrained to be unique. Value 'MySql.Data.MySqlClient' is already present.
Je pense que cela signifie que d'une certaine façon mon projet a toujours un DbProviderFactory
qui sert à la version 6.6.5.0 de MySQL bibliothèques. Mais quand je recherche le texte des fichiers de mon projet, je ne trouve pas la chaîne 6.6.5.0
n'importe où.
Pour l'instant, cette solution me permet de me connecter à mon serveur MySQL local, mais quand je publie le projet de mon fournisseur d'hébergement et d'aller directement sur le site dans mon navigateur, je viens d'obtenir un message d'erreur. Je voudrais savoir comment faire pour supprimer l'implicite 6.6.5.0-servir DbProviderFactory
, à la fois dans le cadre de mon apprentissage et parce que je pense que ma solution pourrait être la raison que mon site ne fonctionne pas chez mon hébergeur.
Comme un indice pour trouver une solution, je trouve suspect que lorsque j'essaie d'ajouter une référence, je ne peux voir que (plusieurs versions) 6.6.5.0:
Mais quand je vais à la NuGet manager, je n'ai que la version 6.7.4.0 installé:
Espère que cette aide.
OriginalL'auteur Boris | 2013-10-02
Vous devez vous connecter pour publier un commentaire.
J'ai écrit un blog post sur ce sujet, mon projet est disponible en téléchargement au bas de ce document.
J'ai eu à installer (comme indiqué dans mon article) MySqlDataEntity -Pré, installer la version bêta 6.7.2 bêta, pour obtenir une bonne compatibilité avec les objectifs EF 5, mais je vois que maintenant la version actuelle est à noter 6.7.4, j'ai donc mis à jour mon projet en conséquence, et il fonctionne tout aussi bien, donc, j'ai aussi mis à jour le projet de télécharger à partir de mon blog.
Espère que cela peut vous aider à démarrer avec les objectifs EF et MySql.
BTW, dans le cas où ce n'est pas claire, vous devez installer, via NuGet, MySql.Les données.Les entités, ce qui permettra également d'installer MYSql.Les données, comme des Entités qui en dépendent.
OriginalL'auteur BernardG