我有以下模型(过度简化)
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 Contains)中单独获取其他情况。
答案
答案是从Base类(Person)中删除“abstract”关键字。
答案 0 :(得分:2)
答案是从Base类(Person)中删除abstract关键字:
发件人:强>
public abstract class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public Training Training { get; set; }
}
以强>
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public Training Training { get; set; }
}