指定密钥太长; 最大密钥长度为767字节 – ASPNet Identity MySQL
我用Identity和MySQL创建了一个MVC应用程序。 我创建了我的实体,但是当我创建用户表时,它失败并且标题中指定了错误。 我搜索过,人们说UserName
, Name
和Email
属性太长了。 我已经厌倦了在这些列上设置最大长度,如下面的示例,但我无法让它工作。
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可以排除迁移历史表问题(我已经知道了)。
不幸的是博物馆
- WebApi + Simple Injector + OWIN
- 用户角色/授权在ASP.NET标识中不起作用
- 在用Identity注册时为用户设置角色的正确方法
- 需要将Asp.Net Identity(RTM)用户ID从nvarchar(128)更改为uniqueidentifier
- asp.net身份userName是唯一的吗?
- 在Identity Framework的方法中,HttpContext.Current为null
- 在Asp.Net Identtity中使用UserStore和UserManager有什么区别?
- ASP.NET Identity的默认密码哈希 – 它是如何工作的并且是否安全?
- Web API 2 + MVC 5共享标识表