Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Identitätsfehler (bei Datenbankerstellung) Der angegebene Schlüssel war zu lang

Durch Überprüfen der von EF generierten SQL-Abfragen hatte ich festgestellt, dass das Problem mit UserName (varchar utf8 256) in der Tabelle AspNetUsers und Name (varchar utf8 256) in der Tabelle AspNetRoles zusammenhängt, während die Tabelle für HistoryRow in Ordnung war.

Die folgenden Codes haben das Problem also behoben.

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


}

Um die Lösung zu verdeutlichen, hier sind die Bibliotheken, die ich verwende:

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

Und diese Lösung funktioniert auch für

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