Vous devez configurer votre configuration avec une chaîne de connexion, DbProviderFactory et un DatabaseInitializer personnalisé pour MySql Connector 6.5.4. J'ai détaillé le étape complète pour faire jouer EF5 et MySql, y compris le code pour les initialiseurs sur mon blog . Si vous avez besoin d'une solution de fournisseur d'adhésion ASP.Net, cela a déjà été demandé :Fournisseurs d'adhésion/de rôle ASP.NET pour MySQL ? Je publierai également la solution ici pour une solution EF5 MySql complète.
Le connecteur MySql ne prend actuellement pas en charge la migration EF 5 et ASP.NET ne prend en charge que SimpleMembership (MVC4 par défaut) sur MS SQL et non sur MySql. La solution ci-dessous est pour Code First.
Les étapes sont :
- Récupérer EF 5 depuis NuGet
- Récupérer MySql.Data et MySql.Data.Entity depuis NuGet (6.5.4) ou MySql (6.6.4)
- Configurer un fournisseur de données MySql
- Configurer une chaîne de connexion MySql
- Créer un initialiseur de base de données MySql personnalisé
- Configurer l'initialiseur de base de données MySql personnalisé
- Configurez l'adhésion à ASP.NET si vous en avez besoin
Fournisseur de base de données
<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" />
</DbProviderFactories>
</system.data>
Chaîne de connexion
<connectionStrings>
<add name="ConnectionStringName"
connectionString="Datasource=hostname;Database=schema_name;uid=username;pwd=Pa$$w0rd;"
providerName="MySql.Data.MySqlClient" />
</connectionStrings>
Initialiseur de base de données
Si vous utilisez le connecteur MySql de NuGet (6.5.4), un initialiseur personnalisé est requis. Code disponible sur http:// brice-lambson.blogspot.se/2012/05/using-entity-framework-code-first-with.html ou sur http://www.nsilverbullet.net/2012/11/07/6-steps-to-get-entity-framework-5-working-with-mysql-5-5/
Ajoutez ensuite ceci à la configuration
<configSections>
<section name="entityFramework"
type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection,
EntityFramework, Version=5.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089" />
</configSections>
<entityFramework>
<contexts>
<context type="Namespace.YourContextName, AssemblyName">
<databaseInitializer
type="Namespace.YourChosenInitializer, AssemblyName">
</databaseInitializer>
</context>
</contexts>
<defaultConnectionFactory
type="MySql.Data.MySqlClient.MySqlClientFactory,MySql.Data" />
</entityFramework>
Adhésion ASP.NET
<membership defaultProvider="MySqlMembershipProvider">
<providers>
<clear />
<add name="MySqlMembershipProvider"
type="MySql.Web.Security.MySQLMembershipProvider,
MySql.Web, Version=6.5.4.0, PublicKeyToken=c5687fc88969c44d"
autogenerateschema="true"
connectionStringName="*NAME_OF_YOUR_CONN_STRING*"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
requiresUniqueEmail="false"
passwordFormat="Hashed"
maxInvalidPasswordAttempts="5"
minRequiredPasswordLength="6"
minRequiredNonalphanumericCharacters="0"
passwordAttemptWindow="10"
passwordStrengthRegularExpression=""
applicationName="/" />
</providers>
</membership>
Faites fonctionner AccountController et Views :
- Supprimez le dossier MVC 4 AccountController, AccountModels, Account view et _LoginPartial shared view
- Créer une nouvelle application Web MVC 3
- Copiez le dossier AccountController, AccountModels, Account View et _LogOnPartial de MVC 3 dans votre application MVC 4
- Remplacer
@Html.Partial(“_LoginPartial”)
dans la vue _Layout partagée avec@Html.Partial(“_LogOnPartial”)