2012-04-13 5 views
4

Ich habe eine Tabelle in der Datenbank mit einem Primärschlüssel sagen emp_pk. Jetzt benutze ich LINQ und versuche einige Operationen auszuführen. Wenn ich einige Eigenschaften und Aufruf zu ändern,SubmitChanges fügt intern alle Felder als Where-Klausel hinzu, wie man es los wird

context.SubmitChanges(); 

idealerweise die where-Klausel sollte where emp_pk = value enthalten.

Aber wenn ich die Abfrage von SQL-Profiler überprüfen, sehe ich viele Bedingungen in WHERE-Klausel, die, glaube ich, von LINQ-Engine generiert werden. Dies verursacht ein großes Leistungsproblem.

Kann mir bitte jemand in diesem Fall helfen, die Abfrage zu optimieren?

+0

Dies verursacht ein großes Leistungsproblem: wirklich ?? Warum oder wird das Leistungsproblem von linq-2-sql erstellt, das viele Datensätze nacheinander aktualisiert? – Pleun

+0

10k in sich ist kein Problem. Die Frage ist, wie viele Sie gleichzeitig aktualisieren. Wenn Sie große Mengen von Datensätzen gleichzeitig aktualisieren, ist Linq2Sql performancewise nicht die beste Wahl – Pleun

Antwort

6

Das ist, weil optimistische Gleichzeitigkeitsprüfung aktiviert ist. Sie können es pro Spalte deaktivieren, indem Sie Update Check = nie pro Spalte im dbml-Designer

+0

Ich verwende SQLMetal, um Klassen zu generieren. Bitte lassen Sie mich wissen, wie ich dasselbe mit SQLMEtal machen kann. –

+0

Ich sah die Klasse von SQLMetal generiert. Für einige der Spalten ist diese Eigenschaft festgelegt, aber nicht für alle. Und für die Spalten, in denen diese Eigenschaft festgelegt ist, werden diese Spalten in der SET-Anweisung verwendet. –

Verwandte Themen