Как вначале загружать отношения «многие ко многим» с кодом структуры сущностей? - PullRequest
4 голосов
/ 02 мая 2011

Я приведу самый простой пример, который я могу придумать для ясности.

Допустим, у меня есть две сущности следующей формы:

public class Student
{
    public int Id {get;set}
    public string FullName {get;set;}
    public virtual ICollection<Course> Courses {get;set;}
}

public class Courses
{
    public int Id {get;set;}
    public string FullName {get;set;}
    public virtual ICollection<Student> Students {get;set;}
}

Эти две сущности отображаются в три таблицы, третья - таблица для объединений.

Когда я спрашиваю студентов, как это

var allStudents = context.Students;

, а затем просмотрите результаты, чтобы отобразить список студентов и их курсов, например:

foreach (var student in allStudents) 
{
    display(student.FullName);
    foreach (var course in student.Courses) 
    {
        display(course.FullName);
    }
}

Я получаю запрос курса для каждого учащегося, возвращенного первым запросом.

Как мне сказать, что структура сущностей с готовностью загружает курсы в студентов всего одним запросом?

1 Ответ

11 голосов
/ 02 мая 2011

Вы хотите, чтобы запрос Include() показал, что вы хотите загружать связанные Course сущности:

var allStudents = context.Students.Include( s => s.Courses);

Также убедитесь, что у вас есть

using System.Data.Entity;

вваш файл кода, чтобы вы могли использовать строго типизированный метод расширения Include().

...