sql >> Databasteknik >  >> RDS >> Mysql

Identitetsfel (vid databasskapande) angivna nyckel var för lång

Genom att kontrollera SQL-frågorna som genererades av EF, hade jag funnit att problemet var relaterat till UserName (varchar utf8 256) i tabellen AspNetUsers och Name (varchar utf8 256) i tabellen AspNetRoles, medan tabellen för HistoryRow var bra.

Så följande 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();
    }


}

För att förtydliga lösningen, här är biblioteken jag använder:

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

Och den här lösningen fungerar även för

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


  1. MySQL-BEGRÄNSNING och INGEN ÅTGÄRD

  2. Ansluter SQL Server till PostgreSQL

  3. Entity Framework och flera scheman

  4. Uppgradera MySQL till MariaDB 10 (Del 2 – Uppgradera MariaDB/MySQL 5.5 till version 10.0)