Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Identitas (pada pembuatan basis data) kesalahan kunci yang ditentukan terlalu panjang

Dengan memeriksa kueri SQL yang dihasilkan oleh EF, saya menemukan bahwa masalahnya terkait dengan UserName (varchar utf8 256) di tabel AspNetUsers dan Name (varchar utf8 256) di tabel AspNetRoles, sedangkan tabel untuk HistoryRow baik-baik saja.

Jadi kode berikut menyelesaikan masalah.

    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();
    }


}

Untuk memperjelas solusinya, inilah perpustakaan yang saya gunakan:

  1. EF 6.1.0
  2. Microsoft ASP.NET Identity EntityFramework 2.0.0
  3. ASP.NET Identity Owin 2.0.0
  4. Perpustakaan MySql .NET 6.8.3

Dan solusi ini juga berfungsi untuk

  1. EF 6.1.1
  2. Microsoft ASP.NET Identity EntityFramework 2.0.1
  3. ASP.NET Identity Owin 2.0.1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sintaks Pembaruan Java MySQL

  2. Di MySQL, haruskah saya mengutip angka atau tidak?

  3. Membuat variabel array di MySQL

  4. File my.cnf MySQL - Opsi yang ditemukan tanpa grup sebelumnya

  5. Bagaimana cara Memeriksa apakah Tombol Radio Dicentang atau Dipilih di jQuery?