sql >> Databáze >  >> RDS >> Mysql

Chyba identity (při vytváření databáze) zadaný klíč byl příliš dlouhý

Prostřednictvím kontroly SQL dotazů generovaných EF jsem zjistil, že problém souvisí s UserName (varchar utf8 256) v tabulce AspNetUsers a Name (varchar utf8 256) v tabulce AspNetRoles, zatímco tabulka pro HistoryRow byla v pořádku.

Následující kódy tedy problém vyřešily.

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


}

Abychom objasnili řešení, zde jsou knihovny, které používám:

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

A toto řešení funguje i pro

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


  1. Python/postgres/psychopg2:získávání ID právě vloženého řádku

  2. Dotaz MySQL pro aktualizaci záznamů se zvýšeným datem

  3. Jste seřazeni? Tipy týkající se řazení oken T-SQL

  4. O příkazu GO na serveru SQL Server