Подтвердить что ты не робот

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 открыт еще хуже.

4b9b3361

Ответ 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".
  • Откройте его свойства, щелкнув правой кнопкой мыши.
  • На вкладке "Общие" задайте тип запуска "Отключено".
  • Остановите службу, если она уже не наклонена.

Проверка:

  1. Откройте Visual Studio EDMX, и вы должны заметить разницу сразу, если нет, тогда у вас может не быть той же проблемы, что и я.
  2. Перезагрузите компьютер и снова проверьте 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. Мы будем держать этот вопрос в курсе прогресса, доступности исправления, обходных путей и т.д.