Mysql
 sql >> Base de données >  >> RDS >> Mysql

La clé spécifiée par erreur d'identité (à la création de la base de données) était trop longue

En vérifiant les requêtes SQL générées par EF, j'avais trouvé que le problème était lié à UserName (varchar utf8 256) dans la table AspNetUsers et Name (varchar utf8 256) dans la table AspNetRoles, tandis que la table pour HistoryRow était correcte.

Les codes suivants ont donc résolu le problème.

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


}

Pour clarifier la solution, voici les bibliothèques que j'utilise :

  1. EF 6.1.0
  2. Microsoft ASP.NET Identity EntityFramework 2.0.0
  3. ASP.NET Identité Owin 2.0.0
  4. Bibliothèques MySql .NET 6.8.3

Et cette solution fonctionne aussi pour

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