Sellec
@Sellec
Кодер

Существует ли аналог EXPLAIN для EF6 для объяснения, почему запрос на основе Linq2Entities сформировался именно так?

Когда мы создаем запрос вида
var query = from t1 in dbcontext.table1
join t2 in dbcontext.table2 on ....
то можем получить текст запроса, скомпилированного на основе дерева выражения, через query.ToString. Это будет запрос, отправляемый в СУБД.
А как понять, на основе каких соображений EF скомпилировал и собрал запрос именно в таком виде? Как получить разъяснение, что inner join или left outer join был выбран исходя из таких-то атрибутов сущностей, такого-то слова в выражении, что where построен именно поэтому, столбцы в select именно потому и так далее?
Да, я знаю, что внутреннюю кухню EF надо знать и представлять, как что работает, но когда сегодня потратил час на выяснение, почему банальный join .... in ... into ... DefaultIfEmpty НЕ дает left outer join (как оказалось - в классе был объявлен атрибут ForeignKey для ключевого поля, а я как-то забыл об этом), понял, что иногда для выяснения причин вот такой explain ОЧЕНЬ бы не помешал.
  • Вопрос задан
  • 154 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы