0

当我对每个层次结构进行表映射时,我遇到了 EF6 的问题。我有一个有孩子的Person班级。这两个类几乎相同,除了一个字段:DepartmentId(以及后续链接的组件 Department)。EmployeeManager

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"));

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

4

1 回答 1

0

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

dbContext.Person
    .OfType<Manager>()
    .Include(m => m.Department)
于 2018-08-06T14:58:35.040 回答