0

我有以下模型(过于简化)

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)中删除“抽象”关键字。

4

1 回答 1

2

答案是从基类(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; }
    }
于 2013-07-15T20:06:41.140 回答