我正在将ASP.NET Core 2.1用于带有PersonalAuthentication的项目。我的User表需要其他属性,因此我是从IdentityUser
继承的,如下所示:
public class ApplicationUser : IdentityUser
{
[Required]
[DataType(DataType.Text)]
public string Name { get; set; }
[Required]
[DataType(DataType.Text)]
public string LastName { get; set; }
}
此修改后,AspNetUsers
表未重命名。所有其他身份表都被重命名。我不知道为什么会这样。
在创建ApplicationUser
类之后,我在代码IdentityUser
中将ApplicationUser
替换为Startup.cs
下面是修改之前的代码
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddDefaultIdentity<IdentityUser>()
.AddEntityFrameworkStores<ApplicationDbContext>();
修改后
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddDefaultIdentity<ApplicationUser>()
.AddEntityFrameworkStores<ApplicationDbContext>();
这是我的OnModelCreating方法
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
base.OnModelCreating(builder);
modelBuilder.Entity<ApplicationUser>().ToTable("User");
//modelBuilder.Entity<IdentityUser>().ToTable("User");
modelBuilder.Entity<IdentityRole>().ToTable("Role");
modelBuilder.Entity<IdentityUserClaim<string>().ToTable("UserClaim");
modelBuilder.Entity<IdentityUserRole<string>>().ToTable("UserRole");
modelBuilder.Entity<IdentityUserLogin<string>().ToTable("UserLogin");
modelBuilder.Entity<IdentityRoleClaim<string>().ToTable("RoleClaim");
modelBuilder.Entity<IdentityUserToken<string>().ToTable("UserToken");
}
现在,我不知道重命名AspNetUsers
表还缺少什么。我没有找到任何解决方案,仍在搜索。
答案 0 :(得分:2)
流利的配置还可以,但是用作您的上下文基础的标识类不是。
如Customizing the model 中所述(重点是我的):
自定义模型的出发点是源自适当的上下文类型;请参阅上一节。
和前面的部分介绍了基类,泛型类型参数和默认配置。
话虽如此,由于您仅使用自定义的IdentityUser
派生类,因此基数至少应为IdentityDbContext<TUser>
:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
// ...
}