Thông qua việc kiểm tra các truy vấn SQL được tạo bởi EF, tôi nhận thấy rằng sự cố liên quan đến Tên người dùng (varchar utf8 256) trong bảng AspNetUsers và Tên (varchar utf8 256) trong bảng AspNetRoles, trong khi bảng cho HistoryRow vẫn ổn.
Vì vậy, các mã sau đã giải quyết được sự cố.
public class WebPortalDbContext : IdentityDbContext<ApplicationUser>
{
public WebPortalDbContext()
: base("IdentityConnection")
{
}
public static WebPortalDbContext Create()
{
return new WebPortalDbContext();
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Microsoft.AspNet.Identity.EntityFramework.IdentityRole>()
.Property(c => c.Name).HasMaxLength(128).IsRequired();
modelBuilder.Entity<Microsoft.AspNet.Identity.EntityFramework.IdentityUser>().ToTable("AspNetUsers")//I have to declare the table name, otherwise IdentityUser will be created
.Property(c => c.UserName).HasMaxLength(128).IsRequired();
}
}
Để làm rõ giải pháp, đây là các thư viện tôi đang sử dụng:
- EF 6.1.0
- Microsoft ASP.NET Identity EntityFramework 2.0.0
- ASP.NET Identity Owin 2.0.0
- Thư viện MySql .NET 6.8.3
Và giải pháp này cũng hoạt động cho
- EF 6.1.1
- Microsoft ASP.NET Identity EntityFramework 2.0.1
- ASP.NET Identity Owin 2.0.1