Entity Framework edmx нажимает на диаграмму очень медленно
Предыстория: у меня есть первая модель EF6 с базой данных в Visual Studio 2015 (последний nuget 6.1.3, указывающий на локальную базу данных SQL Server 2014 SP1 Express) на ноутбуке Windows 10 Pro. После того, как я обновился с Windows 8.1 и Visual Studio 2013., я также обновил модель от EF5 около 6 месяцев назад, но я не думаю, что это актуально, поскольку я также попытался восстановить с нуля.
Модель: набор из примерно 100 таблиц, 50 просмотров и 250 ассоциаций.
Проблема заключается в том, что каждый раз, когда я хочу внести изменения в свою модель, любой вид щелчка (слева или справа) на диаграмме .edmx
заставляет Visual Studio перестать отвечать на несколько минут. Я переместил все, что мог, на другую диаграмму (представления, в которых нет ассоциаций), которая не имеет этой проблемы, поэтому я предполагаю, что количество ассоциаций является проблемой. Для большинства из них требуются ассоциации внешних ключей, вытащенные из базы данных. Тем не менее, требуется около получаса, чтобы связать 3 ассоциации FK для просмотра моей основной диаграммы. Я могу понять, существует ли ограничение на сущности в модели, но я не понимаю, почему просто щелчок по диаграмме должен заставить Visual Studio перестать отвечать на запросы. Диспетчер задач показывает интенсивное использование ЦП и отсутствие использования диска.
Нажатие на любое из объектов прекрасно, так как перемещает их или редактирует. Проблема заключается в нажатии на фоновое полотно.
Я взял обновление модели из базы данных через браузер модели, но я не могу обойти это, щелкнув правой кнопкой мыши на диаграмме, чтобы создать новые ассоциации.
Я не видел никаких комментариев по этой проблеме в любом месте. Любые предложения причины или обходные пути?
BTW Я только что переустановил Windows 10 Pro и установил только SQL Server 2014 SP1 Express и Visual Studio 2105 Pro. Так что в моей системе ничего нет.
UPDATE: ProcDump предоставляет этот стек, когда DevEnv.exe становится невосприимчивым, предлагая поиск собственного кода для графических объектов:
[External Code]
[Managed to Native Transition]
Microsoft.VisualStudio.Modeling.Sdk.Diagrams.GraphObject.14.0.dll!<Module>.GeoSCursor.search(GeoSCursor* value)
Microsoft.VisualStudio.Modeling.Sdk.Diagrams.GraphObject.14.0.dll!Microsoft.VisualStudio.Modeling.Diagrams.GraphObject.VGGraph.GetObjectsInRect(LRECT bbox, Microsoft.VisualStudio.Modeling.Diagrams.GraphObject.VGLayoutObjectList items, VSGLayoutObject** ignoreItems, int numberItems, int numbertypes, int* types, bool searchSubGraphs)
Microsoft.VisualStudio.Modeling.Sdk.Diagrams.GraphObject.14.0.dll!Microsoft.VisualStudio.Modeling.Diagrams.GraphObject.VGGraph.GetObjectsInRect(LRECT bbox, Microsoft.VisualStudio.Modeling.Diagrams.GraphObject.VGLayoutObjectList items, VSGLayoutObject** ignoreItems, int numberItems, int numbertypes, int* types, bool searchSubGraphs)
Microsoft.VisualStudio.Modeling.Sdk.Diagrams.GraphObject.14.0.dll!Microsoft.VisualStudio.Modeling.Diagrams.GraphObject.VGGraph.get_ObjectsInRectangle(double x0, double y0, double x1, double y1, bool searchSubGraphs)
Microsoft.VisualStudio.Modeling.Sdk.Diagrams.14.0.dll!Microsoft.VisualStudio.Modeling.Diagrams.GraphWrapper.HitTest(Microsoft.VisualStudio.Modeling.Diagrams.RectangleD hitArea, bool requireCompleteContainment, bool searchSubGraphs)
Microsoft.VisualStudio.Modeling.Sdk.Diagrams.14.0.dll!Microsoft.VisualStudio.Modeling.Diagrams.GraphWrapper.SpatialQuery(Microsoft.VisualStudio.Modeling.Diagrams.GraphWrapper.SpatialDirection direction, Microsoft.VisualStudio.Modeling.Diagrams.ShapeElement currentShape, Microsoft.VisualStudio.Modeling.Diagrams.ShapeElement parentShape)
Microsoft.VisualStudio.Modeling.Sdk.Diagrams.14.0.dll!Microsoft.VisualStudio.Modeling.Diagrams.ShapeElement.FindNextInChildShapes(Microsoft.VisualStudio.Modeling.Diagrams.ShapeElement startFromChildShape, bool focusableRequired)
Microsoft.VisualStudio.Modeling.Sdk.Diagrams.14.0.dll!Microsoft.VisualStudio.Modeling.Diagrams.ShapeAccessibleObject.GetChild(int index)
System.Windows.Forms.dll!System.Windows.Forms.AccessibleObject.GetFocused()
System.Windows.Forms.dll!System.Windows.Forms.AccessibleObject.Accessibility.IAccessible.accFocus.get()
System.Windows.Forms.dll!System.Windows.Forms.InternalAccessibleObject.System.Windows.Forms.UnsafeNativeMethods.IAccessibleInternal.get_accFocus()
UPDATE2: у XtraSimplicity есть решение, которое работает для некоторых, но не для меня. Благодаря его предложениям я решил это как проблему с прямым графическим драйвером. В моем ноутбуке есть семейство графических адаптеров Intel HD и NVIDIA GeForce GT 750M. Intel является обычным активным адаптером, но проблема также возникает, когда включена только NVidia. Я также попробовал предложение отключить аппаратную поддержку в Visual Studio, но, если что-то, что просто делает производительность VS, когда edmx открыт еще хуже.
Ответы
Ответ 1
У нас была такая же проблема на 2 ноутбуках с Windows 10 и сенсорными экранами. Уязвимость процесса TabTip.exe, похоже, решает проблему.
Источник: https://connect.microsoft.com/VisualStudio/Feedback/Details/2011437
Запустите диспетчер задач и завершите процесс на TabTip.exe(сенсорная клавиатура и панель рукописного ввода). После этого дизайнер ответит отлично. Обратите внимание, что если вы нажмете или коснитесь значка клавиатуры на панели задач, TabTip.exe заново запустится.
Ответ 2
Я не могу комментировать, поскольку у меня только минимальная репутация комментария, однако у меня была точно такая же проблема.
Как и вы, я повторно установил Windows 10 (Enterprise) и Visual Studio (как 2013 Pro, так и 2015 Pro) безрезультатно.
На данный момент я поставил это на задний план и работаю над ним, используя комбинацию DevArt Entity Developer (https://www.devart.com/entitydeveloper/) и ручное редактирование классов в соответствии с изменениями базы данных.
Это утомительно, и не очень весело, но это работает для меня (на данный момент).
Надеюсь, это поможет кому-то.
Edit:
Для всех, кто может столкнуться с этим сообщением в будущем, мне кажется, что проблема решена для меня:
- Перейдите в Инструменты > Параметры > Общие
- Untick "Автоматическая настройка визуального восприятия на основе производительности клиента"
- Untick "Использовать графическое ускорение, если доступно"
Хотя вам, возможно, и не придется, я оставил без предупреждения "Включить богатый клиентский визуальный опыт".
Если это не сработает, ознакомьтесь с комментариями ниже этого ответа - возможно, это будет полезно.:)
Источник: http://pinter.org/?p=2611
Изменить 2:
Моя проблема вернулась, и после дальнейшего расследования выяснилось, что это было вызвано удаленным рабочим столом (в настоящее время я использую виртуальную машину Windows 10 с ESXi). Переключение на VNC или использование VMWare VSphere Web Console приводит к тому, что Visual Studio работает отлично. Надеюсь, это поможет кому-то!:)
Ответ 3
Я попробовал принятый ответ, и он сделал, но проблема была возвращена при перезагрузке. Я также попробовал другие ответы без успеха. Я обнаружил оскорбительный сервис Windows и использовал экран управления службами Windows 10 для отключения службы. Я надеюсь, что это поможет другим с этой проблемой.
Как полностью отключить службу
Отключите службу:
- Окно пользователя начнет поиск (в меню "Пуск" ) и введите: Услуги
- Вы должны увидеть настольное приложение Windows под названием Сервисы (откройте его).
- Найдите службы, называемые "Touch Keyboard and Handwriting Panel Service".
- Откройте его свойства, щелкнув правой кнопкой мыши.
- На вкладке "Общие" задайте тип запуска "Отключено".
- Остановите службу, если она уже не наклонена.
Проверка:
- Откройте Visual Studio EDMX, и вы должны заметить разницу сразу, если нет, тогда у вас может не быть той же проблемы, что и я.
- Перезагрузите компьютер и снова проверьте EDMX, он не должен быть медленным.
Примечание. Это немного путается с вашим жестом и сенсорным планшетом, поэтому, если вы используете это много, не делайте этого. Это руководство предназначено для Windows 10 и работает для меня, но может не сработать для вас. Также я не тестировал, будет ли обновление Windows повторно активировано.
Ответ 4
Это проблема с Microsoft.VisualStudio.Modeling.Sdk в Windows 10, а также влияет на конструктор LINQ to SQL (DBML). В настоящее время команда, которая владеет VS Modeling SDK, работает над этим. У нас есть проблема, отслеживающая его на сайте проекта EF https://entityframework.codeplex.com/workitem/2861. Мы будем держать этот вопрос в курсе прогресса, доступности исправления, обходных путей и т.д.