Entity Framework правильное использование объединения таблиц? - PullRequest
2 голосов
/ 17 октября 2011

У меня есть синтаксис ниже. Я установил ограничения sql (то есть отношения внешнего ключа в модели данных и т. Д.). Мне интересно, как я могу написать это утверждение с помощью лямбда-выражения. Является ли это возможным? Я читал статьи о нетерпеливой загрузке, но не уверен, как это можно применить и смогу ли я написать запрос более кратким?

var nominations = from n in ctx.Nominations
                              join c in ctx.Nominees
                              on n.NominationId equals c.NominationId
                              where c.NomineeADUserName == UserName
                              select n;

1 Ответ

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

Вы можете написать тот же запрос, используя синтаксис метода следующим образом:

ctx.Nominations.Join(ctx.Nominees, 
                     n=>n.NominationId, 
                     c=>c.NominationId, 
                     (n,c)=>new {c, n})
               .Where(x=>x.c.NomineeADUserName == Username)
               .Select(x.n);

Я думаю, важно сделать его читабельным, а не лаконичным. Ваша версия более читабельна.

Также, независимо от того, пишете ли вы синтаксис метода или синтаксис запроса, запрос будет оцениваться лениво. Если вы хотите, вы можете принудительно загружать, вызывая ToList () в конце любого запроса.

Если вы также хотите загрузить свойства навигации (связанные сущности), вам нужно вызвать метод EntitySet Включить , прежде чем сделать его частью запроса

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...