Для того, что бы правильно работать с EntityFramework необходимо представлять во что превращаются LINQ запросы и как необходимо реализовывать те, или иные варианты соединения таблиц.
Информация все есть в интернете, данная заметка предназначена (в большей степени) для личной справки, что бы каждый раз не вспоминать редко используемую информацию.
И так, SQL имеет несколько типов содинения таблиц (рассматриваем T-SQL):
Далее реализация каждого типа JOIN на EF. Для тестов была создана простейшая база данных, с двумя таблицами:
EF: Результирующий SQL:
Информация все есть в интернете, данная заметка предназначена (в большей степени) для личной справки, что бы каждый раз не вспоминать редко используемую информацию.
И так, 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 JOINRIGHT JOIN
Не поддерживается, но легко реализуется заменой порядка таблиц в EF, переводя запрос на LEFT JOIN.CROSS JOIN
EF: Результирующий SQL:FULL JOIN
Не поддерживается, делается искусственно - результат так себе. С другой стороны FULL OUTER редкостьEF: Результирующий SQL:
Комментариев нет :
Отправить комментарий