2009-08-14 4 views
1

Mir ist aufgefallen, dass es viel schneller ist, einen DataContext zu verteilen und neu zu erstellen, als ihn mit RefreshMode.OverwriteCurrentValues zu aktualisieren, was eigentlich dasselbe sein sollte.Linq To SQL: Warum ist das Disponieren und Wiederherstellen einer DataContext-Methode schneller als das Aktualisieren?

Während dies bewirkt, dass meine Bewerbung bei 100% CPU für einige Sekunden, um Spike

dbc.Refresh(RefreshMode.OverwriteCurrentValues, dbc.Property); 

der folgende Code sogar 50% des CPU nicht aufessen und dauert ca. eine einzige Sekunde:

dbc.Dispose(); 
dbc = new PropertyManagementDataContext(); 

während auch alle meine lokalen Änderungen überschreiben und nur meine lokalen Daten aus der DB aktualisieren. Oder habe ich etwas übersehen?

Besteht die Gefahr, den DataContext zu entsorgen und neu zu erstellen, um die neuesten Daten aus der Datenbank zu erhalten?

Antwort

1

Refresh() ist eigentlich Rund-Trip zur Datenbank. Das Disponieren und Wiederherstellen des Kontexts verwendet lokal zwischengespeicherte Verbindungsinformationen. Dies wird schneller sein.

Bearbeiten:
Auch, nach der docs Sie wahrscheinlich verwenden Refresh() aus dem falschen Grund. Siehe die Bemerkung nach unten.

+0

Ich sehe, du hast Recht. –

Verwandte Themen