2016-01-14 6 views
0

Я пытаюсь присоединиться к двум моделям, а затем выбрать значения из объединенной таблицы. То, что я реализовал, на сегодняшний день - это мое понимание и сбор информации из разных решений в SO. Но в x я всегда получаю значения из первого контекста context.EventSessionTeamModels, но ничего из второго. Но все, начиная от блока Select, необходимо извлечь из второго context.SessionModels. Возможно, я присоединился к ним неправильно. Мне нужно знать, что нужно сделать. Сообщите мне, нужна ли какая-либо другая часть кода, кроме кода ниже.Объединение нескольких таблиц в asp.net mvc5 с использованием Entity Framework

IQueryable<SessionShortModel> shortInfoSession = context.EventSessionTeamModels 
.Join(context.SessionModels, x => x.session_id, y => y.session_id, (x, y) => x) 
.Where(x => x.event_id == eid && x.bp_id == attendeeId && x.role_code == "ATD") 
.Select(x => new SessionShortModel { 
    StartTime = x.start_date, 
    EndTime = x.end_date, 
    Day = DbFunctions.TruncateTime(x.start_date), 
    Year = x.start_date.Year, 
    Month = x.start_date.Month, 
    Name = x.session_name 
    }); 

ответ

0

В EF вы должны в отношения сущностей, EventSessionTeamModels потребности имеет propierty SessionModels

List<SessionShortModel> shortInfoSession = context.EventSessionTeamModels 
.Include("SessionModels") 
.Where(x => x.SessionModels.event_id == eid && x.SessionModels.bp_id == attendeeId && x.SessionModels.role_code == "ATD") 
.Select(x => new SessionShortModel { 
    StartTime = x.start_date, 
    EndTime = x.end_date, 
    Day = DbFunctions.TruncateTime(x.start_date), 
    Year = x.start_date.Year, 
    Month = x.start_date.Month, 
    Name = x.session_name 
    }).ToList(); 
+0

Я согласен с тем, что свойства навигации более подходят, чем объединения, но 'Include' здесь не имеет никакого эффекта, потому что запрос заканчивается проецированием. –

+0

EventSessionTeamModels должны иметь прокси IEnumerabe sessionsModels = get; set; и отношения в сопоставлении [info] (http://www.entityframeworktutorial.net/code-first/configure-one-to-many-relationship-in-code-first.aspx) – J4ime

1

Может быть, это решить проблему. Вы получаете данные из первой таблицы, когда используете «x». При изменении переменной на «Y» вы получите данные из второй таблицы.

+0

Может быть ... позаботиться об объяснении почему это поможет? –

Смежные вопросы