我正在使用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
手动构建吗?
答案 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");
}