指定密钥太长; 最大密钥长度为767字节 – ASPNet Identity MySQL

我用Identity和MySQL创建了一个MVC应用程序。 我创建了我的实体,但是当我创建用户表时,它失败并且标题中指定了错误。 我搜索过,人们说UserNameNameEmail属性太长了。 我已经厌倦了在这些列上设置最大长度,如下面的示例,但我无法让它工作。

IdentityModel:

  [DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))] public class ApplicationDbContext : IdentityDbContext { public ApplicationDbContext() : base("CaptureDBContext", throwIfV1Schema: false) { } public static ApplicationDbContext Create() { return new ApplicationDbContext(); } protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity().Property(u => u.UserName).IsUnicode(false); modelBuilder.Entity().Property(u => u.Email).IsUnicode(false); modelBuilder.Entity().Property(r => r.Name).HasMaxLength(255); } } 

有人可以帮忙吗?

我可以使用它来处理标准实体,但不能使用Identity表

这个问题不重复,因为链接中发布的教程是2年,MySQL.Data版本则不支持EF。 我正在使用的那个。

我自己找到了答案。

问题与User表中的UserName和Email有关。 然后是Role表中的Name。

我在IdentityModel类中添加了所有三个的最大长度。 这里是:

  [DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))] public class ApplicationDbContext : IdentityDbContext { public ApplicationDbContext() : base("CaptureDBContext", throwIfV1Schema: false) { } public static ApplicationDbContext Create() { return new ApplicationDbContext(); } protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity().Property(u => u.UserName).HasMaxLength(255); modelBuilder.Entity().Property(u => u.Email).HasMaxLength(255); modelBuilder.Entity().Property(r => r.Name).HasMaxLength(255); } } } 

哦,将DbConfigurationType添加为MySQL可以排除迁移历史表问题(我已经知道了)。

不幸的是博物馆