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

问题描述 投票:0回答:1

当我执行每层次表映射时,我遇到了EF6的问题。我有一个Person类,有EmployeeManager儿童。除了一个字段外,这两个类几乎相同:DepartmentId(以及后续的链接组件部门)。

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

现在我的问题是,当我想要包括部门时,我无法弄清楚如何做到这一点。有谁能够帮我?还是用文章或其他东西指引我正确的方向?

c# entity-framework entity-framework-6 table-per-hierarchy tph
1个回答
0
投票

我假设你的dbContext只暴露了Person DbSet。此外,您不会指示您是要尝试获取所有Person对象还是仅尝试管理器。如果是后者,您可以使用OfType<T>方法强制转换为正确的类型。

dbContext.Person
    .OfType<Manager>()
    .Include(m => m.Department)
© www.soinside.com 2019 - 2024. All rights reserved.