Страницы

вторник, 1 марта 2016 г.

SQL JOIN в EntityFramework

Для того, что бы правильно работать с EntityFramework необходимо представлять во что превращаются LINQ запросы и как необходимо реализовывать те, или иные варианты соединения таблиц.


Информация все есть в интернете, данная заметка предназначена (в большей степени) для личной справки, что бы каждый раз не вспоминать редко используемую информацию.

И так, SQL имеет несколько типов содинения таблиц (рассматриваем T-SQL):
  • INNER JOIN
  • LEFT JOIN
  • RIGHT JOIN
  • CROSS JOIN
  • FULL JOIN

Далее реализация каждого типа JOIN на EF. Для тестов была создана простейшая база данных, с двумя таблицами:

INNER JOIN

EF: Результирующий SQL:

LEFT JOIN

EF: Результирующий SQL: Кстати, использование .Include() так же приводит к LEFT JOIN

RIGHT JOIN

Не поддерживается, но легко реализуется заменой порядка таблиц в EF, переводя запрос на LEFT JOIN.

CROSS JOIN

EF: Результирующий SQL:

FULL JOIN

Не поддерживается, делается искусственно - результат так себе. С другой стороны FULL OUTER редкость
EF: Результирующий SQL:

Комментариев нет :

Отправить комментарий