Я пытался получить доступ к свойству GradeInfo последней оценки учащегося, используя ef core 2.1
Я перечислил модели в конце вопроса
var students = applicationDbContext.Students.Where(s => s.Id ==2)
.Select(student => new {
LatestGrade = student.Grades.OrderBy(g => g.Date).FirstOrDefault(),
Id = student.Id
}).ToList();
Кроме того, я использую ленивые загрузочные прокси (из Microsoft.EntityFrameworkCore.Proxies) в startup.cs
services.AddDbContext<ApplicationDbContext>(options =>
options.UseLazyLoadingProxies()
.UseSqlServer(connectionString));
Выдается ошибка:
"Сгенерирована ошибка для предупреждения Microsoft.EntityFrameworkCore.Infrastructure.DetachedLazyLoadingWarning: Была предпринята попытка отложенной загрузки свойства навигации «Информация» для отдельного объекта типа «GradeProxy». Ленивая загрузка не поддерживается для отдельных объектов или объектов, которые загружаются с помощью «AsNoTracking ()»."
Кроме того, я хочу заявить, что я пытался добавить Inculde к базе данных sudents, как описано в следующем коде, но проблема не решена.
var student = applicationDbContext.Students.Include( s => s.Grades )
.ThenInclude( grade => grade.Info).Where(...).Select(...)
модели
class Student{
public int Id { get; set;}
public virtual ICollection<Grade> Grades { get; set;}
...
}
class Grade {
public virtual GrandeInfo Info { get; set;}
public DateTime Date { get; set;}
}
class GrandeInfo {
public int Id { get; set;}
public int Score { get; set;}
}