Я ищу решение, не добавляя свойство Grade в классе Student
Итак, вы хотите получить Grade
для Student
, но нехотите добавить Grade
свойство навигации к Student
и позволить EF Core обрабатывать это естественно для вас?Другими словами, вы теряете одно из самых больших преимуществ ORM и начинаете искать решения SQL-ish для простых запросов, которые ORM может обрабатывать с помощью простого средства доступа к свойствам?
Есть способы сделать то, что вы хотите, но яЯ бы посоветовал сначала спросить себя, действительно ли вам это нужно.
В любом случае, одним из возможных решений является использование свойства навигации по коллекции с Any
в качестве фильтра:
var studentGrade = context.Grades
.FirstOrDefault(grade => grade.Students.Any(student => student.Id == studentId));
Другое - использованиеLINQ-эквивалент SQL-запроса:
var studentGrade = (
from grade in context.Grades
from student in grade.Students
where student.Id == studentId
select grade).FirstOrDefault();