实体框架6每个层次结构表的特定包括

时间:2018-08-06 14:45:49

标签: c# entity-framework entity-framework-6 table-per-hierarchy tph

按层次结构映射表时,EF6出现问题。我有一个Person类,有EmployeeManager个孩子。这两个类几乎相同,除了一个字段: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"));

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

1 个答案:

答案 0 :(得分:0)

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

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