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:

Connexion MySQL dans ASP.NET MVC 4 et Entity Framework 5.0 - plusieurs DbProviderFactories

Mais quand je vais à la NuGet manager, je n'ai que la version 6.7.4.0 installé:

Connexion MySQL dans ASP.NET MVC 4 et Entity Framework 5.0 - plusieurs DbProviderFactories

Espère que cette aide.

OriginalL'auteur Boris | 2013-10-02