Mysql
 sql >> база данни >  >> RDS >> Mysql

Посоченият ключ за грешка в идентичността (при създаване на база данни) е твърде дълъг

Чрез проверка на SQL заявките, генерирани от EF, открих, че проблемът е свързан с UserName (varchar utf8 256) в таблицата AspNetUsers и Name (varchar utf8 256) в таблицата AspNetRoles, докато таблицата за HistoryRow беше наред.

Така че следните кодове разрешиха проблема.

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


}

За да изясните решението, ето библиотеките, които използвам:

  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 библиотеки 6.8.3

И това решение работи и за

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Сумирайте резултатите от няколко заявки и след това намерете топ 5 в SQL

  2. Изпращане на Ajax формуляр с бутон за изпращане

  3. Как да промените стойността по подразбиране на колона с помощта на процедура

  4. Изключение „не можа да се намери драйвер“ по време на миграция в yii2

  5. Как да повторя произволни редове от базата данни?