Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

A chave especificada do erro de identidade (na criação do banco de dados) era muito longa


Ao verificar as consultas SQL geradas pelo EF, descobri que o problema estava relacionado a UserName (varchar utf8 256) na tabela AspNetUsers e Name (varchar utf8 256) na tabela AspNetRoles, enquanto a tabela para HistoryRow estava bem.

Portanto, os códigos a seguir resolveram o 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();
    }


}

Para esclarecer a solução, aqui estão as bibliotecas que estou usando:
  1. EF 6.1.0
  2. Microsoft ASP.NET Identity EntityFramework 2.0.0
  3. ASP.NET Identity Owin 2.0.0
  4. Bibliotecas MySQL .NET 6.8.3

E esta solução também funciona para
  1. EF 6.1.1
  2. Microsoft ASP.NET Identity EntityFramework 2.0.1
  3. ASP.NET Identity Owin 2.0.1