如何将新列添加到 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");
});
⋮
}
我用 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; }
}
最后添加迁移和更新数据库。
我正在尝试向身份(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");
});
⋮
}
我用 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; }
}
最后添加迁移和更新数据库。