Entity Framework - Как запросить объект на основе значений таблицы моста? - PullRequest
0 голосов
/ 28 октября 2011

Сначала о настройке моего стола:

Group:
    groupId - int
    groupName - varchar

Schedule:
    scheduleId - int
    scheduleName - varchar

Group_Schedules
    scheduleId - int/fk to Schedule
    groupId - int/fk to Group

Я использую EF, в приведенном выше сценарии не создается сущность EF для представления Group_Schedules, вместо этого добавляется коллекция в таблицы Group и Schedule, представляющие другой конец.

Мне нужно получить все группы, которые относятся к расписанию, и чтобы мое возвращение было IQueryable<Group>. Т.е. (и нет, это не работает из-за способа, которым EF генерирует таблицу мостов):

var g = from g in context.Groups
        where g.Group_Schedule.scheduleId = 1 // This doesn't work because Group_Schedule is a collection of Schedule
        select g;

Есть ли элегантный способ получить нужные мне данные?

1 Ответ

1 голос
/ 29 октября 2011

Оба из них вернут IQueryable<Group>:

var groups = from g in db.Groups
             where g.Schedules.Any(s => s.scheduleId == 1)
             select g;

var groups = (from s in db.Schedules
              where s.scheduleId == 1
              select s.Groups).SelectMany(g => g);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...