Bạn cần thiết lập cấu hình của mình với chuỗi kết nối, DbProviderFactory và DatabaseInitializer tùy chỉnh cho MySql Connector 6.5.4. Tôi đã trình bày chi tiết về bước đầy đủ để phát EF5 và MySql, bao gồm mã cho trình khởi tạo trên blog của tôi . Nếu bạn yêu cầu giải pháp nhà cung cấp thành viên ASP.Net, giải pháp này đã được hỏi trước đây: Nhà cung cấp vai trò / thành viên ASP.NET cho MySQL? Tôi cũng sẽ đăng giải pháp ở đây để có giải pháp EF5 MySql hoàn chỉnh.
Trình kết nối MySql hiện không hỗ trợ di chuyển EF 5 và ASP.NET chỉ hỗ trợ SimpleMembership (MVC4 mặc định) trên MS SQL chứ không phải MySql. Giải pháp dưới đây dành cho Code First.
Các bước là:
- Lấy EF 5 từ NuGet
- Lấy MySql.Data và MySql.Data.Entity từ NuGet (6.5.4) hoặc MySql (6.6.4)
- Định cấu hình Nhà cung cấp dữ liệu MySql
- Định cấu hình chuỗi kết nối MySql
- Tạo Trình khởi tạo Cơ sở dữ liệu MySql Tùy chỉnh
- Định cấu hình Trình khởi tạo Cơ sở dữ liệu MySql Tùy chỉnh
- Định cấu hình tư cách thành viên ASP.NET nếu bạn yêu cầu
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>
Chuỗi kết nối
<connectionStrings>
<add name="ConnectionStringName"
connectionString="Datasource=hostname;Database=schema_name;uid=username;pwd=Pa$$w0rd;"
providerName="MySql.Data.MySqlClient" />
</connectionStrings>
Trình khởi tạo cơ sở dữ liệu
Nếu bạn đang sử dụng trình kết nối MySql từ NuGet (6.5.4) thì cần phải có trình khởi tạo tùy chỉnh. Mã có sẵn tại http:// brice-lambson.blogspot.se/2012/05/using-entity-framework-code-first-with.html hoặc tại http://www.nsilverbullet.net/2012/11/07/6-steps-to-get-entity-framework-5-working-with-mysql-5-5/
Sau đó, thêm cái này vào cấu hình
<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>
Tư cách thành viên 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>
Làm cho AccountController và Views hoạt động:
- Xóa MVC 4 AccountController, AccountModels, thư mục Account view và _LoginPartial view shared
- Tạo một ứng dụng web MVC 3 mới
- Sao chép thư mục AccountController MVC 3, AccountModels, Account view và _LogOnPartial xem được chia sẻ vào ứng dụng MVC 4 của bạn
- Thay thế
@Html.Partial(“_LoginPartial”)
trong chế độ xem _Layout được chia sẻ với@Html.Partial(“_LogOnPartial”)