Debe configurar su configuración con una cadena de conexión, DbProviderFactory y un DatabaseInitializer personalizado para MySql Connector 6.5.4. He detallado los paso completo para reproducir EF5 y MySql, incluido el código para los inicializadores en mi blog . Si necesita una solución de proveedor de membresía ASP.Net, se le preguntó antes:Proveedores de roles/pertenencia de ASP.NET para MySQL? Publicaré la solución aquí también para una solución completa de EF5 MySql.
El conector MySql actualmente no admite la migración de EF 5 y ASP.NET solo admite SimpleMembership (valor predeterminado de MVC4) en MS SQL, no en MySql. La solución a continuación es para Code First.
Los pasos son:
- Obtenga EF 5 de NuGet
- Obtenga MySql.Data y MySql.Data.Entity de NuGet (6.5.4) o MySql (6.6.4)
- Configurar un proveedor de datos MySql
- Configurar una cadena de conexión MySql
- Cree un inicializador de base de datos MySql personalizado
- Configurar el inicializador de base de datos MySql personalizado
- Configure la membresía de ASP.NET si lo requiere
ProveedorDb
<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>
Cadena de conexión
<connectionStrings>
<add name="ConnectionStringName"
connectionString="Datasource=hostname;Database=schema_name;uid=username;pwd=Pa$$w0rd;"
providerName="MySql.Data.MySqlClient" />
</connectionStrings>
Inicializador de base de datos
Si está utilizando el conector MySql de NuGet (6.5.4), se requiere un inicializador personalizado. Código disponible en http:// brice-lambson.blogspot.se/2012/05/using-entity-framework-code-first-with.html o en http://www.nsilverbullet.net/2012/11/07/6-steps-to-get-entity-framework-5-working-with-mysql-5-5/
Luego agregue esto a la configuración
<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>
Membresía de 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>
Haz que AccountController y Views funcionen:
- Elimine el MVC 4 AccountController, AccountModels, la carpeta de vista de cuenta y la vista compartida _LoginPartial
- Crear una nueva aplicación web MVC 3
- Copie MVC 3 AccountController, AccountModels, la carpeta de vista de cuenta y la vista compartida _LogOnPartial en su aplicación MVC 4
- Reemplace
@Html.Partial(“_LoginPartial”)
en la vista _Layout compartida con@Html.Partial(“_LogOnPartial”)