我有以下模型(过于简化)
public class Training
{
public string Name { get; set; }
public IList<Person> Persons { get; set; }
}
public abstract class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public Training Training { get; set; }
}
[Table("Students")]
public class Student : Person
{
public string StudentNumber { get; set; }
public IList<Training> Trainings { get; set; }
}
[Table("Instructors")]
public class Instructor : Person
{
public DateTime StartingDate { get; set; }
public IList<Training> Trainings { get; set; }
}
我想使用培训名称查询数据库:
var training = _trainingRepository.FindByName("training class 1", include => include.Persons);
这将查询数据库并包括所有学生和教师。
问题:
假设我有一个人既不是学生也不是讲师,但他是“培训班 1”的一部分。我想知道是否有可能在人员列表中也获得所述人员,如果可以,如何?
更新
我问这个问题的真正原因是因为我有 39 个不同的派生类,并且 EF 构建的查询非常慢,原因很明显。我试图在初始查询中只获取少数最常见的情况,然后如果需要,IN
使用基类使用(EF 包含)单独获取其他情况。
回答
答案是从基类(Person)中删除“抽象”关键字。