实体框架edmx点击图表非常慢

时间:2015-11-22 12:41:26

标签: entity-framework visual-studio-2015 entity-framework-6 edmx

背景优先:我在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的性能更差。

5 个答案:

答案 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服务管理屏幕来禁用该服务。我希望这对这个问题有帮助。

如何完全禁用服务

停用服务:

  1. 用户窗口开始搜索(通过开始菜单)并输入:服务
  2. 你应该看到一个名为Services(打开它)的Windows桌面应用程序。
  3. 找到名为&#34;触摸键盘和手写面板服务&#34;。
  4. 的服务
  5. 打开其属性,(右键单击)。
  6. 在“常规”选项卡下,将启动类型设置为&#34;已禁用&#34;。
  7. 如果服务尚未弯曲,请停止服务。
  8. 验证

    1. 打开Visual Studio的EDMX,您应该立即注意到差异,如果没有,那么您可能不会遇到与我相同的问题。
    2. 重新启动计算机并再次测试EDMX,它不应该很慢。
    3. 注意:这会使你的手势和触摸板有点乱,所以如果你经常使用它,那就不要这样做了。本指南适用于Windows 10,并为我工作但可能不适合您。此外,我还没有测试Windows更新是否会重新启用该服务。

答案 2 :(得分:4)

我无法评论,因为我只是在最低评论声誉之下,但我一直有同样的问题。

与您一样,我重新安装了Windows 10(企业版)和Visual Studio(2013 Pro和2015 Pro),但无济于事。

目前,我已将其置于后台,并通过使用DevArt的实体开发人员(https://www.devart.com/entitydeveloper/)并手动编辑类来匹配数据库更改来解决这个问题。

这很乏味,而且不是很有趣 - 但它对我有用(暂时)。

希望这有助于某人。

修改

对于将来可能会遇到此帖的任何人,以下似乎已经为我解决了这个问题:

  • 导航至工具&gt;选项&gt;一般
  • Untick“根据客户端性能自动调整视觉体验”
  • 取消“如果可用,请使用图形加速”

虽然您可能不必这样做,但我保留了“启用富客户端视觉体验”的功能。

如果这不起作用,请查看此答案下方的评论 - 它可能有用。 :)

来源:http://pinter.org/?p=2611

编辑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 ,请在开始使用实体框架图之前将其禁用,然后在完成后使其禁用。我不经常进入实体框架图,所以这对我有用。