背景优先:我在Windows 10 Pro笔记本电脑上的Visual Studio 2015(最新的nuget 6.1.3,指向本地SQL Server 2014 SP1 Express数据库)中有一个数据库优先的EF6模型。从Windows 8.1和Visual Studio 2013升级后,我也在大约6个月前从EF5升级了模型,但我不认为这是相关的,因为我也尝试过从头开始重建。
模型:约100个表,50个视图和250个关联的集合。
问题在于每次我想对模型进行更改时,.edmx
图表上的任何类型的单击(左或右)都会导致Visual Studio在几分钟内无响应。我已经把所有我可以移动到另一个图表(主要没有关联的视图)没有这个问题,所以我假设关联的数量是问题。其中大多数都是从数据库中引入的外键关联。然而,在我的主图上链接3个FK关联以获取视图需要大约半个小时。我可以理解模型中的实体是否存在限制,但我无法理解为什么只需单击图表就会使Visual Studio变得无响应。任务管理器显示CPU使用率过高且无磁盘使用。
点击任何实体都很好,就像移动它们或编辑它们一样。问题是点击背景画布。
我已经通过模型浏览器从数据库更新了模型,但是我无法通过右键单击图表来创建新的关联。
我在任何地方都没有看到任何关于此问题的评论。有关原因或解决方法的任何建议吗?
BTW我刚刚重新安装了Windows 10 Pro,除了SQL Server 2014 SP1 Express和Visual Studio 2105 Pro之外什么都没安装。所以我的系统没有任何自定义。
更新:当DevEnv.exe无响应时,ProcDump提供此堆栈跟踪,建议本机代码搜索图形对象:
[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有一个适用于某些人的解决方案,但不适用于我。由于他的建议,我已将此作为直接图形驱动程序问题排除在外。我的笔记本电脑配有英特尔高清显卡系列和NVIdia GeForce GT 750M显示适配器。 Intel是常用的有源适配器,但仅在启用NVidia时也会出现此问题。我也尝试过在Visual Studio中禁用硬件支持的建议,但是如果有任何东西只是在edmx开放时才会使VS的性能更差。
答案 0 :(得分:32)
我们在使用Windows 10和触摸屏的2台笔记本电脑上遇到了同样的问题。杀死进程TabTip.exe似乎解决了这个问题。
来源:https://connect.microsoft.com/VisualStudio/Feedback/Details/2011437
在TabTip.exe上执行任务管理器和结束进程(触摸键盘和手写面板)。在这样做后,设计师将做出很好的回应。请注意,如果单击或触摸TaskBar中的“键盘”图标,TabTip.exe将重新启动。
答案 1 :(得分:5)
我尝试了接受的答案,确实为我工作,但重启时返回了问题。我也试过其他答案但没有成功。我发现有问题的windows service并使用Windows 10服务管理屏幕来禁用该服务。我希望这对这个问题有帮助。
停用服务:
验证
注意:这会使你的手势和触摸板有点乱,所以如果你经常使用它,那就不要这样做了。本指南适用于Windows 10,并为我工作但可能不适合您。此外,我还没有测试Windows更新是否会重新启用该服务。
答案 2 :(得分:4)
我无法评论,因为我只是在最低评论声誉之下,但我一直有同样的问题。
与您一样,我重新安装了Windows 10(企业版)和Visual Studio(2013 Pro和2015 Pro),但无济于事。
目前,我已将其置于后台,并通过使用DevArt的实体开发人员(https://www.devart.com/entitydeveloper/)并手动编辑类来匹配数据库更改来解决这个问题。
这很乏味,而且不是很有趣 - 但它对我有用(暂时)。
希望这有助于某人。
修改强>
对于将来可能会遇到此帖的任何人,以下似乎已经为我解决了这个问题:
虽然您可能不必这样做,但我保留了“启用富客户端视觉体验”的功能。
如果这不起作用,请查看此答案下方的评论 - 它可能有用。 :)
编辑2:
我的问题又回来了,经过进一步调查后,它似乎是由远程桌面引起的(我目前正在使用ESXi托管的Windows 10 VM)。切换到VNC或使用VMWare VSphere Web控制台可以使Visual Studio完美运行。希望这有助于某人! :)
答案 3 :(得分:2)
这是Windows 10上的Microsoft.VisualStudio.Modeling.Sdk的问题,也会影响LINQ to SQL(DBML)设计器。拥有VS Modeling SDK的团队目前正致力于此。我们在EF项目网站https://entityframework.codeplex.com/workitem/2861上跟踪它时遇到问题。我们将通过进度,修复程序的可用性,变通方法等来更新该问题。
答案 4 :(得分:0)
如果您已安装扩展 productivity power tools ,请在开始使用实体框架图之前将其禁用,然后在完成后使其禁用。我不经常进入实体框架图,所以这对我有用。