Entity Framework 6 Table 每个层次结构具体包括

Entity Framework 6 Table Per Hierarchy specific includes

当我对每个层次结构映射执行 Table 时,EF6 出现问题。我有一个 Person class,它有 EmployeeManager children。这两个 class 几乎相同,除了一个字段:DepartmentId(以及随后链接的组件 Department)。

class Person {
  public string Name {get; set;}
}
class Employee : Person {}
class Manager : Person {
  public int DepartmentId {get; set;}
  public Department Department {get; set;}
}

我已经为此类事情设置了必要的 EF:

protected override void OnModelCreating(DbModelBuilder modelBuilder) {
  modelBuilder.Entity<Person>()
     .Map<Employee>(x => x.Requires("Discriminator").HasValue("emp"))
     .Map<Manager>(x => x.Requires("Discriminator").HasValue("man"));

现在我的问题是,当我想包括部门时,我不知道该怎么做。有谁能够帮我?或者用文章之类的给我指明正确的方向?

我假设您的 dbContext 仅公开 Person DbSet。此外,您不会指明您是要获取所有 Person 对象还是仅获取 Managers。如果是后者,您可以使用 OfType<T> 方法转换为正确的类型。

dbContext.Person
    .OfType<Manager>()
    .Include(m => m.Department)