2016-09-23 118 views
1

我已經創建了一個帶有標識和MySQL的MVC應用程序。我已經創建了我的實體,但是當我創建用戶表時,它會失敗並顯示標題中指定的錯誤。 我周圍搜索過,有人說UserName,NameEmail屬性太長。我已經厭倦了像下面的例子那樣在這些列上設置最大長度,但是我一直無法使它工作。指定的密鑰太長;最大密鑰長度是767字節 - ASPNet標識MySQL

IdentityModel:

[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))] 
    public class ApplicationDbContext : IdentityDbContext<ApplicationUser> 
    { 
     public ApplicationDbContext() 
      : base("CaptureDBContext", throwIfV1Schema: false) 
     { 
     } 

     public static ApplicationDbContext Create() 
     { 
      return new ApplicationDbContext(); 
     } 
     protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 
      base.OnModelCreating(modelBuilder); 

      modelBuilder.Entity<ApplicationUser>().Property(u => u.UserName).IsUnicode(false); 
      modelBuilder.Entity<ApplicationUser>().Property(u => u.Email).IsUnicode(false); 
      modelBuilder.Entity<IdentityRole>().Property(r => r.Name).HasMaxLength(255); 
     } 
    } 

誰能幫助?

我可以得到它與標準機構工作,但沒有標識表

這個問題是不是一個重複,因爲這是張貼在鏈接的教程爲2歲,MySQL.Data版本則沒有支持EF。我正在使用的那個。

回答

5

我自己找到了答案。

問題在於用戶表中的用戶名和電子郵件。然後在角色表中的名稱。

我在我的IdentityModel類中爲所有三個添加了最大長度。那就是:

[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))] 
    public class ApplicationDbContext : IdentityDbContext<ApplicationUser> 
    { 
     public ApplicationDbContext() 
      : base("CaptureDBContext", throwIfV1Schema: false) 
     { 
     } 

     public static ApplicationDbContext Create() 
     { 
      return new ApplicationDbContext(); 
     } 
     protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 
      base.OnModelCreating(modelBuilder); 
      modelBuilder.Entity<ApplicationUser>().Property(u => u.UserName).HasMaxLength(255); 
      modelBuilder.Entity<ApplicationUser>().Property(u => u.Email).HasMaxLength(255); 
      modelBuilder.Entity<IdentityRole>().Property(r => r.Name).HasMaxLength(255); 
     } 
    } 
} 

噢,並添加DbConfigurationType是MySQL的梳理了遷移歷史表的問題(我已經知道這一點)。

不幸的musefan