【发布时间】:2021-05-05 01:52:09
【问题描述】:
我自定义了IdentityUser,并将其命名为User。现在将User 扩展为Doctor 和Secretary。
using Microsoft.AspNetCore.Identity;
//...
public class User : IdentityUser
{
public string UserType {get; set;}
//some props
}
public class Doctor : User
{
//some props
}
public class Secretary : User
{
//some props
}
//...
我知道 EF Core 将创建一个鉴别器作为影子属性,但我想将此鉴别器映射到 User.UserType 属性。所以这是我在 DbContext 上的配置:
builder.Entity<User>()
.HasDiscriminator(u=>u.UserType)
.HasValue<User>("user")
.HasValue<Doctor>("doctor")
.HasValue<Secretary>("secretary");
添加迁移时出现此错误:
The CLR property 'UserType' cannot be added to entity type 'IdentityUser' because it is declared on the CLR type 'User'.
为什么会发生这个错误?这是我的好方法吗?
你知道有什么合适的方法来培养不同类型的用户吗?
【问题讨论】:
-
实体类型 错误消息中的“IdentityUser”表示有问题,因为
IdentityUser不能是实体。确保将自定义的User类作为TUser通用参数传递给基本身份相关类,包括数据库上下文,例如YourDbContext : IdentityDbContext<User> -
@IvanStoev 你是对的。这是我的上下文
MyDbContext : IdentityDbContext,我将其更改为MyDbContext : IdentityDbContext<User>,问题解决了。 -
@IvanStoev 留下您的评论作为回应,以便我将其作为适当的回应。
标签: c# asp.net-core entity-framework-core asp.net-core-identity