Использование модели наследования типа на основе типа и кода Entity Framework Сначала я пытаюсь загрузить список производного класса. Обратите внимание, что я не могу изменить модель.Entity Framework Eager Загрузка класса наследуемого типа наследуемого класса
У меня есть следующие модели (чрезмерно упрощенные)
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; }
}
[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; }
}
Я хочу запросить обучение по имени и нетерпеливой нагрузкой все лицам, в том числе производного класса (Student и инструктора). Еще в апреле 2011 года Том Дыкстра seemed to claim it wasn't possible.
Текущая версия Entity Framework не поддерживает загрузку для отношений «один к нулю», когда свойство навигации относится к производному классу структуры наследования TPH.
Изменилось? Я использую EF5.
Я думаю, что подразумевалось под навигационным свойством на производном классе: IList Тренировки (которые я забыл добавить в свой вопрос изначально) находятся внутри класса инструктора и ученика вместо класса Person. Разве связь между Лицом и Инструктором/Студентом не имеет отношения «один к нулю» ?? –
Что касается Include, я предположил, что вам абсолютно необходимо включать классы Student & Instructor для получения данных, которые могут быть загружены по какой-либо причине. Оно работает. Благодаря! –
@ Nick-ACNB: Да, это отношение один к нулю или один на уровне схемы базы данных. Но это не явное отношение для EF со ссылочным навигационным свойством (оно каким-то образом «скрыто» в сопоставлении TPT). Я думаю, что упомянутое ограничение означает только такие явные отношения. – Slauma