Visual Studio 是否有简单的方法可以在AspNetRoles表中添加列?

9rygscc1  于 2022-12-14  发布在  其他
关注(0)|答案(2)|浏览(110)

AspNetRoles表有两列“Id”和“Name”。我需要添加第三列:模块(nvarchar(256),空).
我在我的搜索中找到了一些文章,但大多数都是几年前的,对我来说有点复杂。我想知道是否有一种简单的方法来使用EF?

ff29svar

ff29svar1#

您可以创建一个从IdentityRole继承的自定义类,并在该类中添加所需的任何属性:
1.创建一个自定义类,如下所示:

public class CustomIdentityRole : IdentityRole
    {
        public string NewColumn { get; set; }

    }

1.运行EF migration命令生成表模型,如下所示:

Add-Migration test2
public partial class test2 : Migration
    {
        protected override void Up(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.AddColumn<string>(
                name: "NewColumn",
                table: "AspNetRoles",
                nullable: true);
        }

        protected override void Down(MigrationBuilder migrationBuilder)
        {
          
            migrationBuilder.DropColumn(
                name: "NewColumn",
                table: "AspNetRoles");
        }
    }

1.运行EF更新以添加新列:

Update-Database

arknldoa

arknldoa2#

是的,有一个非常简单的方法。
尽管已经有了一个公认的答案,但它并没有说明如何在 DbContext 中使用它,这就是我决定添加我的答案的原因。

**步骤1:**创建自定义角色

public class ApplicationRole : IdentityRole
{
    public string NewColumn { get; set; }
}

**步骤2:**在DbContext中使用

// string in <ApplicationUser, ApplicationRole, string> is the Key type
public class ApplicationContext : IdentityDbContext<ApplicationUser, ApplicationRole, string>
{
    public ApplicationContext(DbContextOptions<ApplicationContext> options) : base(options) { }

    protected override void OnModelCreating(ModelBuilder builder)
    {
        base.OnModelCreating(builder);
        // Customize the ASP.NET Identity model and override the defaults if needed.
        // For example, you can rename the ASP.NET Identity table names and more.
        // Add your customizations after calling base.OnModelCreating(builder);
    }
}

有关自定义身份模型的详细信息,请参阅此Microsoft Learn指南:https://learn.microsoft.com/en-us/aspnet/core/security/authentication/customize-identity-model?view=aspnetcore-7.0
ApplicationUser看起来像这样:

public class ApplicationUser : IdentityUser
{
}

**步骤3:**打开程序包管理器控制台并使用以下命令创建新迁移:

PM> Add-Migration 'Add new column to roles table'

**步骤4:**使用以下命令将迁移应用到数据库:

PM> Update-Database

相关问题