Asp.net core 如何将新列添加到Identity RoleClaims表(asp net core)
我试图在identity asp net core RoleClaims表中添加一列,但我发现内容只是扩展角色和用户类,而不是RoleClaims。Asp.net core 如何将新列添加到Identity RoleClaims表(asp net core),asp.net-core,identity,roles,claims,Asp.net Core,Identity,Roles,Claims,我试图在identity asp net core RoleClaims表中添加一列,但我发现内容只是扩展角色和用户类,而不是RoleClaims。 是否有人可以提供示例或指出内容。您需要创建一个新类来扩展RoleClaim。下面是一个示例,说明如何在密钥类型为字符串时执行此操作: 编辑: 使用自定义ApplicationRoleClaim类,您还可以覆盖OnModelCreating。这是文档中的一个示例: public class ApplicationDbContext : Ide
是否有人可以提供示例或指出内容。您需要创建一个新类来扩展RoleClaim。下面是一个示例,说明如何在密钥类型为字符串时执行此操作: 编辑: 使用自定义ApplicationRoleClaim类,您还可以覆盖OnModelCreating。这是文档中的一个示例:
public class ApplicationDbContext
: IdentityDbContext<
ApplicationUser, ApplicationRole, string,
ApplicationUserClaim, ApplicationUserRole, ApplicationUserLogin,
ApplicationRoleClaim, ApplicationUserToken>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
⋮
modelBuilder.Entity<IdentityRoleClaim<string>>(b =>
{
b.ToTable("MyRoleClaims");
});
⋮
}
参考资料:我用asp.net core 2.2做了一个演示,效果很好,请尝试以下代码,自定义应用程序角色以添加其他属性
public class ApplicationRoleClaim: IdentityRoleClaim<string>
{
public string Description { get; set; }
}
然后使用DbSet类,它表示模型中给定实体的集合,是针对实体执行数据库操作的网关,用于将新列添加到表中
public class ApplicationDbContext : IdentityDbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
public DbSet<ApplicationRoleClaim> ApplicationRoleClaim { get; set; }
}
最后添加迁移和更新数据库。我按照建议做了,但迁移没有应用changes@RafaelUemura确保引用文档,特别是在上下文中重写OnModelCreating方法。我将编辑答案以提供更多细节。@Rafael Uemura我也不认为您希望原语是虚拟的,即您提到的虚拟bool Active-这仅用于导航属性。
public class ApplicationDbContext : IdentityDbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
public DbSet<ApplicationRoleClaim> ApplicationRoleClaim { get; set; }
}