Du måste ställa in din konfiguration med en anslutningssträng, DbProviderFactory och en anpassad DatabaseInitializer för MySql Connector 6.5.4. Jag har detaljerat hela steget för att få EF5 och MySql att spela, inklusive kod för initialiseringarna på min blogg . Om du behöver ASP.Net-lösning för medlemskapsleverantörer har det blivit frågat tidigare:ASP.NET-medlemskap/rollleverantörer för MySQL? Jag kommer att lägga upp lösningen här också för en komplett EF5 MySql-lösning.
MySql-anslutningen stöder för närvarande inte EF 5-migrering och ASP.NET stöder endast SimpleMembership (MVC4-standard) på MS SQL inte MySql. Lösningen nedan är för Code First.
Stegen är:
- Ta EF 5 från NuGet
- Hämta MySql.Data och MySql.Data.Entity från NuGet (6.5.4) eller MySql (6.6.4)
- Konfigurera en MySql-dataleverantör
- Konfigurera en MySql-anslutningssträng
- Skapa en anpassad MySql Databas Initializer
- Konfigurera Custom MySql Database Initializer
- Konfigurera ASP.NET-medlemskap om du behöver det
DbProvider
<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>
Anslutningssträng
<connectionStrings>
<add name="ConnectionStringName"
connectionString="Datasource=hostname;Database=schema_name;uid=username;pwd=Pa$$w0rd;"
providerName="MySql.Data.MySqlClient" />
</connectionStrings>
Databasinitiering
Om du använder MySql-anslutningen från NuGet (6.5.4) krävs en anpassad initialiserare. Koden finns på http:// brice-lambson.blogspot.se/2012/05/using-entity-framework-code-first-with.html eller på http://www.nsilverbullet.net/2012/11/07/6-steps-to-get-entity-framework-5-working-with-mysql-5-5/
Lägg sedan till detta i konfigurationen
<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>
ASP.NET-medlemskap
<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>
Få AccountController och Views att fungera:
- Ta bort MVC 4 AccountController, AccountModels, Account View-mappen och _LoginPartial delad vy
- Skapa en ny MVC 3-webbapplikation
- Kopiera MVC 3 AccountController, AccountModels, Account View-mappen och _LogOnPartial delad vy till din MVC 4-applikation
- Ersätt
@Html.Partial(“_LoginPartial”)
i den delade _Layoutvyn med@Html.Partial(“_LogOnPartial”)