如何将新列添加到 Identity Role Claims table (asp net core)

How to add new colum into Identity RoleClaims table (asp net core)

我正在尝试向身份(asp 网络核心)RoleClaims 添加一列 table 但我发现内容只是为了扩展角色和用户 类 而不是角色声明。 谁能帮忙举个例子或者指出内容。

您需要创建一个新的 class 来扩展 RoleClaim。如果您的密钥类型是 string:

,这是一个如何操作的示例
public class ApplicationRoleClaim : IdentityRoleClaim<string>
{
    public virtual ApplicationRole Role { get; set; }
}

您可以向此 class 添加您想要的任何新属性,然后创建迁移以将它们添加为 table 列。

您还需要告诉您的 IdentityDbContext 也使用这个新的 class。这是文档中的示例:

public class ApplicationDbContext
    : IdentityDbContext<
        ApplicationUser, ApplicationRole, string,
        ApplicationUserClaim, ApplicationUserRole, ApplicationUserLogin,
        ApplicationRoleClaim, ApplicationUserToken>
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
        : base(options)
    {
    }
}

编辑:

使用您的自定义 ApplicationRoleClaim class,您也可以覆盖 OnModelCreating。这是文档中的示例:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    ⋮
    modelBuilder.Entity<IdentityRoleClaim<string>>(b =>
    {
        b.ToTable("MyRoleClaims");
    });
    ⋮
}

参考:Identity model customization in ASP.NET Core

我用 asp.net 核心 2.2 做了一个演示,效果很好,试试下面的代码,自定义 ApplicationRoleClaim 添加其他属性。

public class ApplicationRoleClaim: IdentityRoleClaim<string>
{
    public string Description { get; set; }
}

然后使用 DbSet<TEntity> class,它表示模型中给定实体的集合,并且是针对实体进行数据库操作以将新列添加到 table[ 的网关=14=]

public class ApplicationDbContext : IdentityDbContext
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
        : base(options)
    {

    }

    public DbSet<ApplicationRoleClaim> ApplicationRoleClaim { get; set; }
}

最后添加迁移和更新数据库。