У меня есть запрос EF 6, в котором содержится около 6 ссылок на linq join. Когда я просматриваю свой код с помощью отладчика, я вижу, что для выполнения запроса требуется примерно 6 секунд. С помощью SQL-трассировки я могу сказать, что фактический запрос, который выглядит так, как я ожидал, займет 0 мс и возвращает 0 строк. Я удалил заявления объединения 1 на один. При удалении каждой операции объединения оператор EF занимает 1 секунду меньше, чтобы выполнить. Выбранная часть запроса никогда не менялась, а только количество объединений.Почему платформа Entity Framework настолько медленна с заявлениями о соединении?
Мой вопрос: что происходит? Что такое EF, для этого требуется столько времени для обработки этого запроса? Как ни странно, похоже, что большая часть этого времени фактически потрачена после завершения выполнения SQL, поэтому время не генерирует запрос, но независимо от того, что делает EF после этого.
Запустите профайлер SQL и посмотрите, что EF работает против SQL при запуске сложного запроса из вашего DbContext. Затем, как только вы перестали плакать, упростите свои запросы. – Matt
Сердечно рекомендую отличную презентацию Джимми Богарда о том, как Do и Don'ts используют ORM >> https://github.com/jbogard/presentations/blob/master/ORMs/Orms.pptx – Matt
Как я уже говорил в своем оригинальном посте. Я выполнил трассировку SQL. У меня нет проблемы с тем, что производит EF. SQL выполняется в 0 мс, поэтому я не понимаю, почему строка кода занимает 6 секунд. – Eric