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

Identitetsfejl (ved databaseoprettelse) angivet nøgle var for lang

Ved at kontrollere SQL-forespørgslerne genereret af EF, havde jeg fundet ud af, at problemet var relateret til Brugernavn (varchar utf8 256) i tabellen AspNetUsers og Navn (varchar utf8 256) i tabellen AspNetRoles, mens tabellen for HistoryRow var fin.

Så følgende koder løste problemet.

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


}

For at afklare løsningen, her er de biblioteker, jeg bruger:

  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-biblioteker 6.8.3

Og denne løsning virker også for

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


  1. Duplikere tabel i MYSQL uden at kopiere en række ad gangen

  2. Sideinddeling ved hjælp af MySQL LIMIT, OFFSET

  3. Returner en liste over alle serverudløsere i SQL Server

  4. Er det muligt at bruge en MySql brugerdefineret variabel i en .NET MySqlCommand?