Трябва да настроите конфигурацията си с низ за връзка, DbProviderFactory и персонализиран DatabaseInitializer за MySql конектор 6.5.4. Разписах подробно пълна стъпка за възпроизвеждане на EF5 и MySql, включително код за инициализаторите в моя блог . Ако се нуждаете от решение на доставчик на членство в ASP.Net, то беше запитано преди:Доставчици на членство/роли в ASP.NET за MySQL? Тук ще публикувам решението и за цялостно решение за EF5 MySql.
MySql конекторът понастоящем не поддържа миграция на EF 5 и ASP.NET поддържа само SimpleMembership (MVC4 по подразбиране) на MS SQL, а не на MySql. Решението по-долу е за Code First.
Стъпките са:
- Вземете EF 5 от NuGet
- Вземете MySql.Data и MySql.Data.Entity от NuGet (6.5.4) или MySql (6.6.4)
- Конфигуриране на доставчик на данни за MySql
- Конфигуриране на MySql низ за връзка
- Създайте персонализиран MySql инициализатор на база данни
- Конфигурирайте персонализирания инициализатор на база данни MySql
- Конфигурирайте членство в ASP.NET, ако ви е необходимо
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>
Низ за връзка
<connectionStrings>
<add name="ConnectionStringName"
connectionString="Datasource=hostname;Database=schema_name;uid=username;pwd=Pa$$w0rd;"
providerName="MySql.Data.MySqlClient" />
</connectionStrings>
Инициализатор на база данни
Ако използвате MySql конектор от NuGet (6.5.4), тогава е необходим персонализиран инициализатор. Кодът е наличен на http:// brice-lambson.blogspot.se/2012/05/using-entity-framework-code-first-with.html или на http://www.nsilverbullet.net/2012/11/07/6-steps-to-get-entity-framework-5-working-with-mysql-5-5/
След това добавете това към конфигурацията
<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
<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>
Накарайте AccountController и Views да работят:
- Изтрийте MVC 4 AccountController, AccountModels, папката за изглед на акаунт и _LoginPartial споделен изглед
- Създайте ново MVC 3 уеб приложение
- Копирайте MVC 3 AccountController, AccountModels, папката за изглед на акаунт и споделения изглед _LogOnPartial във вашето приложение MVC 4
- Заменете
@Html.Partial(“_LoginPartial”)
в споделения изглед _Layout с@Html.Partial(“_LogOnPartial”)