按层次结构映射表时,EF6出现问题。我有一个Person
类,有Employee
和Manager
个孩子。这两个类几乎相同,除了一个字段: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"));
现在我的问题是,当我想将部门包括在内时,我不知道该怎么做。有谁能够帮助我?还是用文章或其他东西为我指明正确的方向?
答案 0 :(得分:0)
我假设您的dbContext仅公开Person
DbSet。另外,您不会指出是要获取所有Person对象还是仅获取Manager。如果是后者,则可以使用OfType<T>
方法强制转换为正确的类型。
dbContext.Person
.OfType<Manager>()
.Include(m => m.Department)