Entity framework core не подгружаются связи многие ко многим

Есть 2 модели:

public class Class
{
    public int id { get; set; }
    [Required]
    public string Name { get; set; }

    public ICollection<ExamInfo> ExamInfos { get; set; }

    public Class()
    {
        ExamInfos = new List<ExamInfo>();
    }

    public override string ToString()
    {
        return Name;
    }
}

public class ExamInfo
{
    public int id { get; set; }
    [Required]
    public DateTime dateExam { get; set; }
    [Required]
    public string Name { get; set; }
    //какие классы будут сдавать экзамен
    public ICollection<Class> Classes { get; set; }
    public ExamInfo()
    {
        Classes=new List<Class>();
    }
    public override string ToString()
    {
        return Name;
    }
}

Для них соответственно создалась автоматически таблица

    CREATE TABLE [dbo].[ExamInfoClasses] (
    [ExamInfo_id] INT NOT NULL,
    [Class_id]    INT NOT NULL
     );

Но когда я пытаюсь получить связанные данные то всегда список пуст, причём с обеих сторон. что не так?

  using (var db = new EntityContext())
        {
            if (dataGridViewStudents.SelectedRows.Count == 0)
                return;
            //подгружаем данные из БД
            var classes=db.Classes.ToList();

            //ВОТ ТУТ В ОТЛАДЧИКЕ СМОТРЮ И ВСЕГДА Classes пусто
            db.ExamInfos.ToList();



            //получаем первую попавшуюся строку
            int index = dataGridViewStudents.SelectedRows[0].Index;
            int id = 0;
            if (!Int32.TryParse(dataGridViewStudents[0, index].Value.ToString(), out id))
                return;
            var student = db.Students.Find(id);
            if (student.currentClass == null)
                return;

            //ВОТ ТУТ ВСЕГДА ПУСТО
            var examInfosList=student.currentClass.ExamInfos.ToList();



            List<ExamResult> examResults= new List<ExamResult>();
            foreach(ExamInfo examInfo in examInfosList)
            {
                var examResult= db.ExamResults.Where(exR=>exR.exam==examInfo && exR.student==student).FirstOrDefault();
                if (examResult == null)
                    examResult = new ExamResult() {exam=examInfo,student=student };
                examResults.Add(examResult);
            }
            dataGridViewExam.DataSource = examResults;

        }

Заполнял так:

//создаём два объекта Class
  Class class1 = new Class { Name = "5Б" };
  Class class2 = new Class { Name = "6А" };

 ExamInfo examInfo1 = new ExamInfo {dateExam=new DateTime(2022,1,15),Classes=new List<Class> {class1,class2}, Name = "Физика" };
 ExamInfo examInfo2 = new ExamInfo {dateExam = new DateTime(2022, 1, 15), Classes = new List<Class> {class1},Name="Математика" };

Ответы (1 шт):

Автор решения: Maks
  1. Приведены только модели, а отношений между моделями нет.
  2. Связанные данные не загружаются автоматически, об этом надо позаботиться:
    var classes=db.Classes
                  .Include(x=>x.ExamInfos)
                  .ToList();
→ Ссылка