Когда использовать JOIN, а когда нет в LINQ к сущностям

#linq #linq-to-entities #linq-to-objects

#linq #linq-to-entities #linq-to-objects

Вопрос:

Я новичок в Linq, и я видел, что если существует несколько сущностей, некоторые используют синтаксис multiple FROM, подобный этому:

 from h in db.Hubs   
from ch in h.CityHubs where ch.Cities.CityID == 1 
select
  

а некоторые используют синтаксис explicity join.

 from h in db.Hubs
join ch in da.CityHubs on h.CityId equals ch.CityId
select
  

Если я использую Linq to entities, какой из них мне следует использовать? Если бы я должен был использовать Linq для объектов, какой из них мне следует использовать?

Ответ №1:

Как правило, в Entity Framework, если у вас есть правильная модель и правильно настроены свойства навигации для внешних ключей, вы почти никогда не должны использовать join — вместо этого вы получаете доступ к своему навигационному свойству напрямую, и EF сгенерирует необходимое join для вас в коде SQL. Я рекомендую взглянуть на пост в блоге @Craig Stuntz, посвященный этой проблеме. Однако, что касается Linq-to-objects, это зависит от конкретного запроса, который вы пишете.