【问题标题】:Create new tables for asp net core identity为 asp net core 标识创建新表
【发布时间】:2021-01-19 16:17:29
【问题描述】:

当我们将迁移应用到 Asp Net Core Identity 应用程序时,系统会创建一组基本的 Identity 表,其中每个表都有自己的列。例如:AspNetUsers 表有自己的一组列,并且可以向该表添加新列。 是否可以删除列? 如果我不想使用特定列,是否可以将其删除?

【问题讨论】:

    标签: asp.net-core identity


    【解决方案1】:

    当然可以。以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使用异常,所以删除这些列时需要小心。

    【讨论】:

    • 另外,如果您使用的是脚手架身份页面,请确保添加所有这些页面并将所有使用 IdentityUser 模型的页面更改为 applicationuser。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-31
    • 2021-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多