我有我的DBContext扩展IdentityDbContext但是,当查看抽象类IdentityDbContext时,我看到DbSets喜欢' UserRoles'和' RoleClaims'等
问题是,当我构建数据库时,表格会出现在' ASPNetUserRoles'而不仅仅是“UserRoles”#。有谁知道如何避免这种情况?
答案 0 :(得分:7)
正如您从source code所看到的,这些是基本的IdentityDbContext
流畅配置中的硬编码。
你可以做的是覆盖OnModelCreating
(如果你还没有),调用基础实现,然后遍历模型实体类型并从表名中删除前缀。
这样的事情:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
foreach (var entityType in modelBuilder.Model.GetEntityTypes())
{
const string TableNamePrefix = "AspNet";
var tableName = entityType.Relational().TableName;
if (tableName.StartsWith(TableNamePrefix))
entityType.Relational().TableName = tableName.Substring(TableNamePrefix.Length);
}
}