2带继承的POCO's创建一个表而不是两个表
本文关键字:一个 两个 继承 创建 POCO | 更新日期: 2023-09-27 18:09:08
我正在为假期系统创建一个相当简单的Database
。
Employee
public class Employee
{
public int Id { get; set;}
public string Username { get; set; }
public LineManger Manager { get; set; }
}
LineManger
public class LineManager : Employee
{
public string CompanySection { get; set; }
}
可以看到,每个员工都有一个LineManger
,但是Employee
可以是LineManager
。
在我的DbContext
我有:
public DbSet<Employee> Employees { get; set; }
public DbSet<LineManager> Managers { get; set; }
public DbSet<HolidayConfiguration> Configurations { get; set; }
public DbSet<Holiday> Holidays { get; set; }
当我第一次运行PM > Update-Database -verbose
时,它只创建了一个Employee
表,这个表有CompanySection
和Manager_Id
,它们不映射到任何地方,因为没有LineManager
表。
对为什么会发生这种情况有什么解释吗?这是正确的吗?
它必须是这样的,因为每个LineManager都是一个Employee,所以当你查询Employees时,你也在寻找LineManager。DbSet<Employee> Employees
只匹配一个表,所以EF创建表的唯一方法是把LineManager中的所有字段都放进去。
有时候(当你有更多的继承时)EF会创建一个特殊的列来存放类名