我试图在身份(asp网络核心)RoleClaims表中添加一列,但是我发现内容只是为了扩展角色和用户类,而不是RoleClaims。 有人可以帮忙提供示例或指出内容吗?
答案 0 :(得分:1)
您将需要创建一个新类来扩展RoleClaim
。这是密钥类型为string
时如何执行此操作的示例:
public class ApplicationRoleClaim : IdentityRoleClaim<string>
{
public virtual ApplicationRole Role { get; set; }
}
您可以向此类添加所需的任何新属性,然后创建迁移以将它们添加为表列。
您还需要告诉您的IdentityDbContext
也使用这个新类。这是文档中的示例:
public class ApplicationDbContext
: IdentityDbContext<
ApplicationUser, ApplicationRole, string,
ApplicationUserClaim, ApplicationUserRole, ApplicationUserLogin,
ApplicationRoleClaim, ApplicationUserToken>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
}
编辑:
使用您的自定义ApplicationRoleClaim
类,您也可以覆盖OnModelCreating
。这是来自文档的示例:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
⋮
modelBuilder.Entity<IdentityRoleClaim<string>>(b =>
{
b.ToTable("MyRoleClaims");
});
⋮
}
答案 1 :(得分:0)
我用asp.net core 2.2进行了演示,它运行良好,请尝试以下代码,自定义ApplicationRoleClaim
以添加其他属性。
public class ApplicationRoleClaim: IdentityRoleClaim<string>
{
public string Description { get; set; }
}
然后使用DbSet<TEntity>
类代表模型中给定实体的集合,并且是针对实体进行数据库操作以将新列添加到表的网关
public class ApplicationDbContext : IdentityDbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
public DbSet<ApplicationRoleClaim> ApplicationRoleClaim { get; set; }
}
最后添加迁移和更新数据库。