我当前的 Asp.Net MVC 5 项目任务电子邮件地址 for UserName。现在我想要upgradeASPNet Identity v1.0 至v2.0利用其所有新功能(see here).
然而,ASPNet Identity v2.0 添加了Email作为一个单独的列Users表并添加相应的属性身份用户 class.
我不想重复UserName进入这个新的Email柱子。我怎么能够mapIdentityUser 的此电子邮件属性要使用现有的用户名列和属性吗?是否有可能ignore这个电子邮件属性并跳过在用户表中添加列?有人尝试过这个吗?
请分享。
Update
这就是 Identity 2.0 的限制。我们不能忽略 Email 属性或将其保留为 Null。某些身份验证功能将无法使用。 :(
您可以尝试以下其中一项:
-
尝试通过覆盖来忽略它Email
您的财产User
类并取消映射或使用 Fluent API。
public class ApplicationUser : IdentityUser
{
// ....
[NotMapped]
public override string Email { get; set; }
}
or
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<ApplicationUser>().Ignore(u => u.Email);
}
-
当您注册用户时,只需确保您填写Email
和你的UserName
public async Task<ActionResult> Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
// ...
}
}
当然,你也可以随时忽略Email
列,如果您不打算使用它,因为它允许 NULL,所以它只会位于您的AspNetUsers
表中包含一堆 NULL,这不是最好的方法,但请记住,忽略它可能会丢失 ASP.NET Identity 2 可能提供的您可能想要使用的新功能。
NOTE不过我不确定选项 1 是否有效Email
属性,因为它可能在新的身份代码中到处使用。不过值得一试。我知道如果您不需要其他列,这就是您可以删除它们的方法。我个人碰巧使用新的Email
属性/列所以我还没有尝试过。
不确定它是否对您有帮助,但我想我会分享它以防万一。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)