Я обновляю старое веб-приложение MVC с EF4 до EF6 (и с MVC3 до MVC5), используя руководство, которое я нашел на SO.
Функционально выглядит нормально, но я заметил проблемы с производительностью.
Конкретные запросы в prod env для этого приложения, работающего с MVC3 / EF4, выполняются менее чем за полсекунды. То же самое в моей системе Dev после обновления займет несколько секунд.
Для сравнения я создал новое тестовое решение MVC / EF6 на том же компьютере разработчика, на котором я работаю с перенесенным приложением. Я рассмотрел приведенное ниже linq с помощью действия MCV и обнаружил, что между этими двумя приложениями существует большая разница в производительности.
Примечание: и старое, и тестовое приложение не имеют служебных данных в конструкторе контроллера, они обасоздайте только dbContext и выполните запрос.
var sites = DB.Sites.Take(50).Include("Users").OrderBy(s => s.SiteName).ToList();
новое тестовое приложение EF6: обновлено 200 мс старое приложение: 2 секунды
Я профилировал запросы на SQL Server и могуТам нет никаких проблем.
Я рассматриваю вопрос об удалении ADO Entity Framework из старого проекта и начинаю с добавления. но это было первое приложение модели, и это, по-видимому, удаляет все частичные классы, в которых определены метаданные (что приводит к множеству ошибок компиляции).
- Следует ли удалить ADO Entity Frameworkиз старого проекта - и воссоздать в качестве базы данных первое приложение?
- Есть ли что-то, что я пропустил - это может быть причиной проблемы?
- как я могу узнать, где используется время?
Редактировать
Я удалил модель ADO Entity Framework (edmx) и заново обнаружил из базы данных. Это привело к значительному рефакторингу из-за различий во множественном числе между EF4 и EF6. Также были внесены изменения в поведение добавления / обновления / удаления сущностей.
Это не решило проблему производительности.