web-dev-qa-db-ja.com

Entity Frameworkedmxダイアグラムのクリックが非常に遅い

背景を最初に:Windows 10ProラップトップのVisualStudio 2015(ローカルSQL Server 2014 SP1Expressデータベースを指す最新のnuget6.1.3)にデータベースファーストのEF6モデルがあります。 Windows8.1とVisualStudio 2013からアップグレードした後。約6か月前にもEF5からモデルをアップグレードしましたが、最初から再構築も試みたため、これは関係ないと思います。

モデル:約100のテーブル、50のビュー、250の関連付けのセット。

問題は、モデルに変更を加えるたびに、.edmxダイアグラムを(左または右に)クリックすると、VisualStudioが数分間応答しなくなることです。この問題が発生しない別の図(ほとんど関連付けのないビュー)にできる限りすべてを移動したので、関連付けの数が問題であると想定しています。これらのほとんどは、データベースから取得された必須の外部キーの関連付けです。ただし、メインの図を表示するために3つのFKアソシエーションをリンクするのに約30分かかります。モデル内のエンティティに制限があるかどうかは理解できますが、ダイアグラムをクリックするだけでVisualStudioが応答しなくなる理由がわかりません。タスクマネージャは、CPU使用率が高く、ディスク使用率がないことを示しています。

エンティティを移動したり編集したりするのと同様に、エンティティのいずれかをクリックしても問題ありません。問題は、背景のキャンバスをクリックすることです。

モデルブラウザを介してデータベースからモデルを更新しましたが、ダイアグラムを右クリックして新しい関連付けを作成することはできません。

この問題についてのコメントはどこにも見たことがありません。原因や回避策の提案はありますか?

ところで、Windows 10 Proを再インストールし、SQL Server 2014 SP1ExpressとVisualStudio 2105Proだけをインストールしました。したがって、私のシステムには何の習慣もありません。

更新: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には、一部のユーザーには機能するソリューションがありますが、私には機能しません。彼の提案のおかげで、私はこれを直接のグラフィックスドライバーの問題として除外しました。ラップトップにIntelHDグラフィックスファミリーとNVIdiaGeForce GT750Mディスプレイアダプターがあります。 Intelは通常のアクティブなアダプターですが、NVidiaのみが有効になっている場合にも問題が発生します。 Visual Studioでハードウェアサポートを無効にするという提案も試しましたが、edmxが開いているときのVSのパフォーマンスをさらに悪化させるだけです。

20
Tree

Windows10とタッチスクリーンを搭載した2台のラップトップでも同じ問題が発生しました。プロセスTabTip.exeを強制終了すると、問題が解決するようです。

ソース: https://connect.Microsoft.com/VisualStudio/Feedback/Details/2011437

TabTip.exe([キーボードと手書きパネル]をタッチ)でタスクマネージャーとプロセスの終了に移動します。その後、設計者は問題なく応答します。タスクバーのキーボードアイコンをクリックまたはタッチすると、TabTip.exeが再起動することに注意してください。

32
Klaws86

受け入れられた回答を試しましたが、didは機能しましたが、再起動すると問題が再発しました。私も他の答えを試しましたが成功しませんでした。問題のある windows service を見つけ、Windows10サービス管理画面を使用してサービスを無効にしました。これがこの問題を抱えている他の人の役に立つことを願っています。


サービスを完全に無効にする方法

サービスを無効にします。

  1. ユーザーウィンドウは(スタートメニューから)検索を開始し、次のように入力します。サービス
  2. ServicesというWindowsデスクトップアプリが表示されます(開きます)。
  3. 「タッチキーボードと手書きパネルサービス」というサービスを見つけてください。
  4. そのプロパティを開きます(右クリックして)。
  5. [全般]タブで、スタートアップの種類を[無効]に設定します。
  6. まだかがんでいない場合は、サービスを停止します。

検証:

  1. Visual StudioのEDMXを開くと、違いにすぐに気付くはずです。そうでない場合は、私と同じ問題が発生しない可能性があります。
  2. コンピュータを再起動し、EDMXを再度テストします。遅くなることはありません。

注:これはジェスチャーとタッチパッドを少し混乱させるので、それを頻繁に使用する場合はこれを行わないでください。このガイドはWindows10を対象としており、私には役立ちましたが、うまくいかない場合があります。また、Windows Updateでサービスが再度有効になるかどうかもテストしていません。

5
Gram

最低限のコメントレピュテーションを下回っているためコメントできませんが、まったく同じ問題が発生しています。

あなたと同じように、私はWindows 10(Enterprise)とVisual Studio(2013Proと2015Proの両方)を再インストールしましたが、役に立ちませんでした。

今のところ、私はこれをバックバーナーに置き、DevArtのエンティティ開発者( https://www.devart.com/entitydeveloper/ )と手動の組み合わせを使用して回避していますデータベースの変更に一致するようにクラスを編集します。

それは退屈で、それほど楽しいことではありませんが、私にとってはうまくいきます(今のところ)。

うまくいけば、これは誰かを助けます。

編集:

将来この投稿に出くわす可能性のある人にとって、次のことがこの問題を解決したようです。

  • [ツール]> [オプション]> [一般]に移動します
  • [クライアントのパフォーマンスに基づいて視覚的なエクスペリエンスを自動的に調整する]のチェックを外します
  • [可能な場合はグラフィックアクセラレーションを使用する]のチェックを外します

必ずしもそうする必要はないかもしれませんが、「リッチクライアントのビジュアルエクスペリエンスを有効にする」はチェックしないでおきました。

これがうまくいかない場合は、この回答の下にあるコメントを見てください-それは役に立つかもしれません。 :)

出典: http://pinter.org/?p=2611

編集2:

問題が再発しました。さらに調査したところ、リモートデスクトップが原因であることがわかりました(現在、ESXiでホストされているWindows 10 VMを使用しています)。 VNCに切り替えるか、VMWare VSphere Web Consoleを使用すると、VisualStudioは完全に正常に実行されます。うまくいけば、これは誰かを助けます! :)

4
XtraSimplicity

これは、Windows 10上のMicrosoft.VisualStudio.Modeling.Sdkの問題であり、LINQ to SQL(DBML)デザイナーにも影響します。 VS Modeling SDKを所有するチームは、現在これに取り組んでいます。 EFプロジェクトサイトで追跡する問題があります https://entityframework.codeplex.com/workitem/2861 。その問題は、進捗状況、修正の可用性、回避策などで最新の状態に保たれます。

2
Rowan Miller