2继承的POCO创建一个表而不是两个

时间:2013-04-15 11:03:49

标签: c# inheritance ef-code-first

我正在为假日系统创建一个相当简单的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表格,此表格中包含CompanySectionManager_Id,这些表格不会映射到任何地方。不是LineManager表。

有关为何发生这种情况的任何解释?这是对的吗?

1 个答案:

答案 0 :(得分:1)

必须是这样的,因为每个LineManager都是一个Employee,因此当您查询Employees时,您也在寻找LineManager。 DbSet<Employee> Employees只匹配一个表,因此EF可以创建表的唯一方法是从LineManager中输入所有字段。

有时候(当你有更多的不干扰时)EF创建一个特殊的列,它会放置类名。