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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实体框架6每个层次结构表特定包括相关的知识,希望对你有一定的参考价值。

当我执行每层次表映射时,我遇到了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"));

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

答案

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

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

以上是关于实体框架6每个层次结构表特定包括的主要内容,如果未能解决你的问题,请参考以下文章

如何将实体映射到包含层次结构的维度表?

实体框架中的类和接口层次结构?

使用 linq 查询和实体框架进行检索

实体框架6不适用于Temporal表

实体框架生成单独的类

如何使用未绑定到具有实体框架代码优先的特定表的序列?