Mysql
 sql >> Database >  >> RDS >> Mysql

La chiave specificata dall'errore di identità (alla creazione del database) era troppo lunga

Controllando le query SQL generate da EF, avevo riscontrato che il problema era correlato a UserName (varchar utf8 256) nella tabella AspNetUsers e Name (varchar utf8 256) nella tabella AspNetRoles, mentre la tabella per HistoryRow andava bene.

Quindi i seguenti codici hanno risolto il problema.

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


}

Per chiarire la soluzione, ecco le librerie che sto usando:

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

E questa soluzione funziona anche per

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