Загрузка вложенных сущностей / коллекций с помощью Entity Framework
Я пытаюсь нетерпеливо загрузить все связанные сущности или коллекцию сущности за один вызов. Мои сущности выглядят так:
Class Person
{
public virtual long Id { get; set; }
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
}
Class Employee
{
public virtual long Id { get; set; }
public DateTime AppointmentDate { get; set; }
public virtual ICollection<EmployeeTitle> Titles { get; set; }
public virtual Person Person { get; set; }
}
Class EmployeeTitle
{
public virtual long Id { get; set; }
public virtual bool IsCurrent { get; set; }
public virtual Title Title { get; set; }
}
Class Title
{
public virtual long Id { get; set; }
public virtual string Code { get; set; }
public virtual string Description { get; set; }
}
что я пытаюсь сделать, это если я вызываю метод для загрузки всех сотрудников, результат должен включать человека, список EmployeeTitles, включая код и описание из названия Я смог добраться до третьего уровня, то есть получить сотрудника с человеком и списком сотрудников. Я не знаю, как получить информацию о названии с помощью EmployeeTitle. Мой код, чтобы получить это:
Context.Employees.Include("Person").Include(e => e.Titles).ToList();
пожалуйста, пролить свет на то, как это сделать. Спасибо заранее.
2 ответов
Вы можете попробовать это:
Context.Employees
.Include(e => e.Person)
.Include(e => e.Titles.Select(t => t.Title))
.ToList();
Select
может применяться к коллекции и загружает навигационные свойства следующего уровня в графе объектов.
Так как это первая страница в моем поиске в google, я просто хотел опубликовать это.
Slauma это нормально. Но рекомендуется использовать Load() вместо ToList (), если вы не планируете фактически использовать список. Так и будет: Context.Employees
.Include(e => e.Person)
.Include(e => e.Titles.Select(t => t.Title))
.Load();