c# - 自定义 Asp.Net Core ApiAuthorizationDbContext 表名
问题描述
我正在使用 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; }
所以,我想我可以基于创建我的 DbContextIdentityDbContext
并手动添加这些,但这感觉就像我在重新发明轮子。有没有办法指定这些表名,还是我真的需要手动构建它IdentityDbContext
?
解决方案
在您的 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");
}
推荐阅读
- ios - 选择下拉菜单在 Safari 浏览器中的 iPhone iOS 版本 14.6 上不起作用
- jquery - 在使用 jQuery 在 django 中制作自动完成搜索功能时,我犯了哪些错误?
- angular - 计算属性名称必须是“字符串”、“数字”、“符号”或“任意”类型
- python - 如何使用opencv从图像中改进矩形?
- java - 在所有对象的参数上运行 java
- sql - SQL根据ID展开列值
- xml - EmEditor v20.8 和 v20.9 无法打开某些 xml 文件
- typescript - 是否可以将泛型类型作为泛型参数传递?
- sql-server - 实体框架 6 搜索外键表
- android - startIntentSenderForResult 已弃用 Android