San*_*osh 7 asp.net-mvc entity-framework asp.net-identity
我现在的Asp.Net MVC 5个项目任务的电子邮件地址的用户名.现在我想将 ASPNet Identity v1.0 升级到v2.0以利用其所有新功能(参见此处).
但是,ASPNet Identity v2.0将Email作为单独的列添加到Users表,并将相应的属性添加到IdentityUser类.
我不想将UserName复制到这个新的电子邮件列中.如何映射 IdentityUser的此电子邮件属性以使用现有的UserName列和属性?是否可以忽略此Email属性并跳过在Users表中添加列?有人试过吗?
请分享.
更新
这是身份2.0的限制.我们不能忽略电子邮件属性或将其保留为空.某些身份功能无效.:(
您可以尝试以下其中一项:
尝试通过覆盖类Email中的属性User并取消映射或使用流畅的 API 来忽略它。
public class ApplicationUser : IdentityUser
{
// ....
[NotMapped]
public override string Email { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
或者
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<ApplicationUser>().Ignore(u => u.Email);
}
Run Code Online (Sandbox Code Playgroud)当您注册用户时,只需确保您填写了Email您的UserName
public async Task<ActionResult> Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
// ...
}
}
Run Code Online (Sandbox Code Playgroud)当然,Email如果你不打算使用它,你总是可以忽略列,因为它允许 NULL,它只会AspNetUsers和一堆 NULL 一起坐在你的表中,这不是最好的方法,但请记住,忽略它你可能会丢失ASP.NET Identity 2 可能提供您可能想要使用的新功能。
注意但是我不确定选项 1 是否适用于Email属性,因为它可能在新的身份代码中到处使用。不过值得一试。我知道如果您不需要其他列,这就是您可以删除它们的方法。我个人碰巧使用了新的Email属性/列,所以我还没有尝试过。
不确定它是否对您有帮助,但我想我会分享它以防万一。
| 归档时间: |
|
| 查看次数: |
3248 次 |
| 最近记录: |