Você precisa configurar sua configuração com uma string de conexão, DbProviderFactory e um DatabaseInitializer personalizado para MySql Connector 6.5.4. Eu detalhei o etapa completa para fazer o EF5 e o MySql funcionarem, incluindo código para os inicializadores no meu blog . Se você precisar de uma solução de provedor de associação ASP.Net, foi solicitado antes:Provedores de associação/função ASP.NET para MySQL? Vou postar a solução aqui também para uma solução completa do EF5 MySql.
Atualmente, o conector MySql não oferece suporte à migração do EF 5 e o ASP.NET oferece suporte apenas a SimpleMembership (padrão MVC4) no MS SQL e não no MySql. A solução abaixo é para Code First.
Os passos são:
- Pegue o EF 5 do NuGet
- Pegue MySql.Data e MySql.Data.Entity do NuGet (6.5.4) ou MySql (6.6.4)
- Configurar um provedor de dados MySQL
- Configurar uma string de conexão MySQL
- Criar um inicializador de banco de dados MySQL personalizado
- Configurar o inicializador de banco de dados MySQL personalizado
- Configure a associação ASP.NET, se necessário
Provedor de Db
<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>
Cadeia de conexão
<connectionStrings>
<add name="ConnectionStringName"
connectionString="Datasource=hostname;Database=schema_name;uid=username;pwd=Pa$$w0rd;"
providerName="MySql.Data.MySqlClient" />
</connectionStrings>
Inicializador de banco de dados
Se você estiver usando o conector MySql do NuGet (6.5.4), será necessário um inicializador personalizado. Código disponível em http:// brice-lambson.blogspot.se/2012/05/using-entity-framework-code-first-with.html ou em http://www.nsilverbullet.net/2012/11/07/6-steps-to-get-entity-framework-5-working-with-mysql-5-5/
Em seguida, adicione isso à configuração
<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>
Associação 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>
Faça o AccountController e o Views funcionarem:
- Exclua o MVC 4 AccountController, AccountModels, pasta de visualização de conta e _LoginPartial shared view
- Criar um novo aplicativo da web MVC 3
- Copie o AccountController do MVC 3, AccountModels, a pasta de visualização da conta e a visualização compartilhada _LogOnPartial em seu aplicativo MVC 4
- Substituir
@Html.Partial(“_LoginPartial”)
na visualização _Layout compartilhada com@Html.Partial(“_LogOnPartial”)