У меня сложный запрос с несколькими левыми соединениями и подзапросами, который мне нужно реализовать в Entify Framework.Я получил монстр SQL, и моя цель - сделать это элегантно с EF.Запрос использует несколько таблиц и создает в верхней части подзапрос «WITH», который позже включается в объединения.Я сделал первый подход с EF, но когда я проверяю вывод, который EF отправляет в БД, внутренние соединения отправляются, когда я ожидаю ЛЕВЫЕ СОЕДИНЕНИЯ.
Ниже приводится сводка SQL:
WITH SUB_QUERY
AS ( SELECT FIELD_A,
FIELD_B,
FIELD_C,
MAX (FIELD_D) MAX_FIELD_D
FROM TABLE_X
WHERE SOME FIELD_A = 'WHATEVER'
GROUP BY FIELD_A, FIELD_B, FIELD_C)
SELECT C.FIELD_A,
C.FIELD_B,
B.FIELD_X,
D.FIELD_S,
E.FIELD_J,
F.FIELD_Y
FROM TABLE_A A
LEFT JOIN SUB_QUERY B
ON A.FIELD_C = B.FIELD_C
LEFT JOIN TABLE_C C
ON B.FIELD_A = C.FIELD_A
LEFT JOIN TABLE_D D
ON A.FIELD_C = D.FIELD_C
LEFT JOIN TABLE_E E
ON A.FIELD_X = E.FIELD_X
LEFT JOIN TABLE_F F
ON A.FIELD_W = F.FIELD_W
WHERE A.FIELD_H = D.FIELD_H
AND A.FIELD_D = B.MAX_FIELD_D
Как видите, подзапрос в верхних фильтрах и группирует некоторые данные, которые будут использованы в объединении ниже.Затем выполняются все объединения и некоторые поля извлекаются из разных таблиц в качестве результата запроса.
Какой подход вы бы порекомендовали мне для выполнения этой задачи?Я пробовал разные подходы, и ни один из них не работает (либо ничего не получается, либо много больше строк, чем SQL-запрос к БД и т. Д.)
Обратите внимание, что модель домена в Entity Framework работает правильноsetup: первичные ключи, коллекции, вложенные объекты и т. д., поэтому я считаю, что некоторые из этих объединений даже не требуются, поскольку мои сущности EF уже содержат ссылки на дочерние коллекции и родительские объекты (свойства навигации).
Спасибомного !!