2014-01-17 4 views
2

Есть ли разница при объединении многих или многих таблиц при использовании предложений «from» или предложений «join»? Выводы, которые возвращаются, одинаковы.Linq to Entities From vs Join

Возьмем для примера три таблицы в отношения многие ко многим (в том числе таблицы перехода): Студенты, StudentCourses, курсы:

var query = from student in context.Students 
      from studentcourse in student.StudentCourses 
      where studentcourse.CourseID == 4 
      select student; 


var query = from student in context.Students 
      join studentcourse in context.StudentCourses 
      on student.StudentID equals studentcourse.StudentID 
      where studentcourse.CourseID == 4 
      select student; 
  1. бы один из них будет лучше практика?
  2. Производительность? Лучше другого? У меня не было возможности использовать SQL Profiler.

Я избежать использования Include по двум причинам:

  1. Я требую условно включает в себя чаще, чем нет, следовательно, два метода выше.
  2. Из того, что я читал, Include возвращает всю связанную таблицу, может облагаться налогом на производительность.

ответ

0

Внутри LINQ to Entities будут созданы два разных запроса, в которых ваш первый пример будет использовать WHERE, а второй будет подключаться к таблицам. Однако это не скажется на производительности, так как оптимизатор SQL создаст те же планы выполнения для обоих этих запросов. См. Inner join vs Where

Лучшие практики мудрого, первый вариант почти всегда предпочтительнее. Использование свойств навигации делает ваш код более легким для чтения и понимания и устраняет необходимость присоединяться к таблицам самостоятельно.