基本类型为 IdentityUser 时如何映射鉴别器列?

How to Map Discriminator Column when base type is IdentittyUser?

我自定义了IdentityUser并命名为User。现在将 User 扩展为 DoctorSecretary.

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'.

为什么会出现这个错误?这是我走的好方法吗?

你知道什么正确的方法来制造不同类型的用户吗?

我刚换了

MyDbContext : IdentityDbContext {...}

MyDbContext : IdentityDbContext<User> {...}

问题已解决。