【发布时间】:2021-01-19 16:17:29
【问题描述】:
当我们将迁移应用到 Asp Net Core Identity 应用程序时,系统会创建一组基本的 Identity 表,其中每个表都有自己的列。例如:AspNetUsers 表有自己的一组列,并且可以向该表添加新列。 是否可以删除列? 如果我不想使用特定列,是否可以将其删除?
【问题讨论】:
标签: asp.net-core identity
当我们将迁移应用到 Asp Net Core Identity 应用程序时,系统会创建一组基本的 Identity 表,其中每个表都有自己的列。例如:AspNetUsers 表有自己的一组列,并且可以向该表添加新列。 是否可以删除列? 如果我不想使用特定列,是否可以将其删除?
【问题讨论】:
标签: asp.net-core identity
当然可以。以AspNetUsers表为例。
首先:新建一个ApplicationUser
public class ApplicationUser:IdentityUser
{
//add a new colum
public string FullName { get; set; }
//remove a EmailConfirmed colum
[NotMapped]
public override bool EmailConfirmed { get; set; }
}
在您的 DbContext 中:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
}
在您的启动中(将IdentityUser 更改为ApplicationUser)。
services.AddDefaultIdentity<ApplicationUser>(options => options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<ApplicationDbContext>();
在您的Views/Shared/_LoginPartial 中,更改为
@inject SignInManager<ApplicationUser> SignInManager
@inject UserManager<ApplicationUser> UserManager
然后Migrate and generate database。
测试结果:可以看到成功添加FullName和删除EmailConfirmed列。
更多详情,您可以查看doc。
注意:需要注意的是,这些列中很多都包含 Identity 的内置方法。如果删除其中的一些列,可能会导致Identity使用异常,所以删除这些列时需要小心。
【讨论】: