自定义Asp.Net Core ApiAuthorizationDbContext表名称

时间:2020-04-14 06:54:19

标签: c# asp.net-core asp.net-core-identity

我正在使用Asp.Net Core标识,并且我想更改默认ApiAuthorizationDbContext生成的表名。为了争辩,假设我要将AspNetRoleClaims更改为MyRoleClaims

我的DbContext看起来像这样:

public class MyDbContext : ApiAuthorizationDbContext<ApplicationUser>
{
    public MyDbContext(
        DbContextOptions<MyDbContext> options,
        IOptions<OperationalStoreOptions> operationalStoreOptions)
        : base(options, operationalStoreOptions)
    {

    }

    public DbSet<MyData> MyData { get; set; }
}

我知道,如果我直接从IdentityDbContext继承,那么我可以指定某些实体,但是我看不到使用ApiAuthorizationDbContext的方法。似乎两者之间的唯一区别在于下表:

public DbSet<PersistedGrant> PersistedGrants { get; set; }
public DbSet<DeviceFlowCodes> DeviceFlowCodes { get; set; }

因此,我想我可以基于IdentityDbContext创建我的DbContext,并手动添加它们,但这感觉就像我在重新发明轮子。有没有办法指定这些表名,或者我真的需要从IdentityDbContext手动构建吗?

1 个答案:

答案 0 :(得分:1)

在ApiAuthorizationDbContext中覆盖OnModelCreating

protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder); 

        modelBuilder.Entity<ApplicationUser>().ToTable("User");
        modelBuilder.Entity<IdentityRole>().ToTable("Role");
        modelBuilder.Entity<IdentityUserRole>().ToTable("UserRole");
        modelBuilder.Entity<IdentityUserClaim>().ToTable("UserClaim");
        modelBuilder.Entity<IdentityUserLogin>().ToTable("UserLogin");
    }