Entity Framework 6 Table 每个层次结构具体包括
Entity Framework 6 Table Per Hierarchy specific includes
当我对每个层次结构映射执行 Table 时,EF6 出现问题。我有一个 Person
class,它有 Employee
和 Manager
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)
当我对每个层次结构映射执行 Table 时,EF6 出现问题。我有一个 Person
class,它有 Employee
和 Manager
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)