我最近决定在我正在ASP.NET Core MVC中开发的网站上实现ASP.NET身份功能。
让我们快速浏览一下主题中的表和类:
public class User : IdentityUser
{
public string FirstName { get; set; }
public stirng LastName { get; set; }
public int CountryId { get; set; }
public Country Country { get; set; }
}
public class Country
{
public int Id { get; set; }
public string ISO { get; set; }
public string Name { get; set; }
}
Country
类有些不相关,但如果您想要User
类的引用。
通过这个设置,我已经配置了我的数据库上下文:
public class DatabaseContext : IdentityDbContext<User>
{
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.Entity<IdentityUser>.ToTable("User");
builder.Entity<IndentityRole>.ToTable("Roles");
builder.Entity<IdentityUserRole<string>>.ToTable("UserRoles");
builder.Entity<IdentityUserClaim<string>>.ToTable("UserClaims");
builder.Entity<IdentityUserLogin<string>>.ToTable("UserLogins");
}
}
我正在使用自定义表(已重命名)并将其映射为这样。
问题
现在,每当我运行我的项目时,在我正在进行的第一次数据库调用中,我收到以下错误:
实体类型'User'应该从'IdentityUser'派生,以反映相应CLR类型的层次结构。
对我来说,这个错误说我的班级User
没有从界面IdentityUser
继承,我不太清楚为什么会这样?很明显,我的班级User
是否继承自IdentityUser
?
答案 0 :(得分:0)
而不是
builder.Entity<IdentityUser>.ToTable("User");
你需要把
builder.Entity<User>.ToTable("Users");
在您要添加身份服务的Startup类中,您需要执行此操作
services.AddIdentity<User, IdentityRole>();