我正在为假日系统创建一个相当简单的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
表。
有关为何发生这种情况的任何解释?这是对的吗?
答案 0 :(得分:1)
必须是这样的,因为每个LineManager都是一个Employee,因此当您查询Employees时,您也在寻找LineManager。 DbSet<Employee> Employees
只匹配一个表,因此EF可以创建表的唯一方法是从LineManager中输入所有字段。
有时候(当你有更多的不干扰时)EF创建一个特殊的列,它会放置类名。