Entity framework core 将扩展类存储在不同的表中

Entity framework core 将扩展类存储在不同的表中,entity-framework-core,Entity Framework Core,我有一个抽象超类,它包含一个[Key]字段。 然后,该类被两个不同的类扩展,它们共享这个[Key]字段,但也有一些自己的字段 但问题是,当我为这两个扩展类创建2个DbSet对象时,它们被放在同一个表中,它们的字段被合并到该表中。 因此,在我的上下文中类中,我定义了以下内容: DbSet<EmployeeAccount> EmployeeAccounts; DbSet<PatientAccount> PatientAccounts; 及 公共类PatientAccount

我有一个抽象超类,它包含一个
[Key]
字段。 然后,该类被两个不同的类扩展,它们共享这个[Key]字段,但也有一些自己的字段

但问题是,当我为这两个扩展类创建2个
DbSet
对象时,它们被放在同一个表中,它们的字段被合并到该表中。 因此,在我的
上下文中
类中,我定义了以下内容:

DbSet<EmployeeAccount> EmployeeAccounts;
DbSet<PatientAccount> PatientAccounts;

公共类PatientAccount:UserAccount
{
[外籍人员(“患者”)]
public int PatientId{get;set;}
公共患者{get;set;}
公共IEnumerable收藏夹{get;set;}
}
我是做错了什么,还是这是预期的行为? 如果需要的话,我是否可以告诉EF为这些实体创建两个单独的表,即使它们共享相同的[Key]字段和超类


提前感谢。

这取决于超类是被视为(a)实体还是(b)仅仅是基类。看起来您需要(b),因此请确保没有其他实体类具有类型为
UserAccount
ICollection
或类似的导航属性。还要确保数据库上下文配置代码中不涉及
modelBuilder.Entity()
调用或
IEntityTypeConfiguration
。这很有意义,感谢您的输入:)
public abstract class UserAccount : Entity<int>
{
     [Key]
     public int Id { get; set; }
     public string Username { get; set; }
     public string Password { get; set; }
}
public class EmployeeAccount : UserAccount
{
     [ForeignKey("Employee")]
     public int EmployeeId { get; set; }
     public Employee Employee { get; set; }

     [Column(TypeName = "nvarchar(24)")]
     public EmployeeType EmployeeType { get; set; }
 }
public class PatientAccount : UserAccount
{
    [ForeignKey("Patient")]
    public int PatientId { get; set; }
    public Patient Patient { get; set; }

    public IEnumerable<FavoriteDoctor> FavouriteDoctors { get; set; }
}