Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 如何将新列添加到Identity RoleClaims表(asp net core)_Asp.net Core_Identity_Roles_Claims - Fatal编程技术网

Asp.net core 如何将新列添加到Identity RoleClaims表(asp net core)

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

我试图在identity asp net core RoleClaims表中添加一列,但我发现内容只是扩展角色和用户类,而不是RoleClaims。
是否有人可以提供示例或指出内容。

您需要创建一个新类来扩展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; }
}