2016-09-23 7 views
1

アイデンティティとMySQLを使用してMVCアプリケーションを作成しました。エンティティを作成しましたが、ユーザテーブルを作成するときは、タイトルに指定されているエラーで失敗します。 私が検索したところ、UserNameNameEmailのプロパティは長すぎますと人々は言っています。私は下の例のようにこれらの列に最大長を設定することに飽き飽きしましたが、動作させることができませんでした。指定されたキーが長すぎます。最大鍵長は767バイトです。ASPNet Identity 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); 
     } 
    } 

誰が助けることはできますか?

私はMySQL.Dataのバージョンが、その後なかった、リンクに掲載されたチュートリアルでは、2歳であるため、この質問が重複していないアイデンティティテーブル

それは、標準のエンティティで動作するように取得することはできませんが、 EFをサポートします。私が使っているものがあります。

答えて

5

私は自分自身で答えを見つけました。

問題は、UserテーブルのUserNameとEmailで問題が発生していました。そして、RoleテーブルのName。

私は自分のIdentityModelクラスで3つの最大長を追加しました。

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

ああ、およびMySQLのようにDbConfigurationTypeを追加すると(私はすでにこれを知っていた)移行履歴テーブルの問題をソートします。ここにあります。

unlucky musefan

関連する問題