Prima di tutto: ho un modello EF6 database-first in Visual Studio 2015 (ultimo nuget 6.1.3 che punta a un database SQL Server 2014 SP1 Express locale) su un laptop Windows 10 Pro. Dopo aver effettuato l'aggiornamento da Windows 8.1 e Visual Studio 2013, ho aggiornato anche il modello di EF5 circa 6 mesi fa, ma non penso che sia pertinente, in quanto ho anche provato a ricostruire da zero.
Il modello: set di circa 100 tavoli, 50 visualizzazioni e 250 associazioni.
Il problema è che ogni volta che voglio apportare modifiche al mio modello, qualsiasi tipo di clic (a sinistra oa destra) sul diagramma .edmx
fa in modo che Visual Studio non .edmx
per alcuni minuti. Ho spostato tutto ciò che posso su un altro diagramma (viste senza associazioni per lo più) che non ha questo problema, quindi presumo che il numero di associazioni sia il problema. La maggior parte di queste sono richieste associazioni di chiavi esterne richiamate dal database. Tuttavia, è necessario circa mezz'ora per collegare 3 associazioni FK per una vista sul mio schema principale. Posso capire se c'è un limite alle entità in un modello, ma non riesco a capire perché il semplice clic sul diagramma dovrebbe far sì che Visual Studio non risponda. Il task manager mostra un uso elevato della CPU e nessun utilizzo del disco.
Fare clic su una qualsiasi delle entità va bene, come se le stesse spostando o modificandole. Il problema è fare clic sulla tela di sfondo.
Ho iniziato ad aggiornare il modello dal database tramite il browser del modello, ma non riesco a spostarmi usando un clic con il tasto destro del mouse sul diagramma per creare nuove associazioni.
Non ho visto nessun commento su questo problema da nessuna parte. Qualche suggerimento di causa o soluzioni alternative?
BTW Ho appena reinstallato Windows 10 Pro e installato nient'altro che SQL Server 2014 SP1 Express e Visual Studio 2105 Pro. Quindi non c'è niente di personalizzato sul mio sistema.
AGGIORNAMENTO: ProcDump fornisce questo stacktrace quando DevEnv.exe non risponde, suggerendo la ricerca del codice nativo per oggetti grafici:
[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 ha una soluzione che funziona per alcuni, ma non per me. Grazie ai suoi suggerimenti l'ho escluso come un problema diretto di driver di grafica. Ho una scheda grafica Intel HD e schede video NVIdia GeForce GT 750M nel mio laptop. Intel è il solito adattatore attivo, ma il problema appare anche quando è abilitato solo NVidia. Ho anche provato il suggerimento di disabilitare il supporto hardware in Visual Studio, ma se qualcosa che rende solo le prestazioni di VS quando un edmx è ancora più aperto.
Abbiamo avuto lo stesso problema su 2 laptop con Windows 10 e touchscreen. Eliminando il processo TabTip.exe sembra risolvere il problema.
Fonte: https://connect.microsoft.com/VisualStudio/Feedback/Details/2011437
Vai Task Manager e Termina processo su TabTip.exe (Touch tastiera e pannello di scrittura a mano). Dopo averlo fatto, il progettista risponderà bene. Nota se fai clic o tocchi l'icona Tastiera nella barra delle attività, il TabTip.exe verrà riavviato.
Ho provato la risposta accettata e ha funzionato per me, ma il problema è tornato al riavvio. Ho anche provato le altre risposte senza successo. Ho trovato il servizio di Windows incriminato e ho utilizzato la schermata di gestione dei servizi di Windows 10 per disabilitare il servizio. Spero che questo sia utile per gli altri con questo problema.
Disabilitare il servizio:
Verifica:
Nota: questo fa pasticciare un po 'il tuo gesto e il touch pad, quindi se lo usi molto, non farlo. Questa guida è per Windows 10, e ha funzionato per me, ma potrebbe non funzionare per voi. Inoltre non ho testato se l'aggiornamento di Windows riattiverà il servizio.