0

我正在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表。

关于为什么会发生这种情况的任何解释?它是否正确?

4

1 回答 1

1

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

有时(当您有更多继承时)EF 创建特殊列,其中放置类名。

于 2013-04-15T11:14:14.893 回答