LINQ to SQL-CompiledQuery.Compile () mit einem Update, Löschen, Einfügen?

stimmen
6

Alle,

So habe ich alle meine SELECT-Abfragen in LINQ-to-SQL konvertiert CompiledQueries zu verwenden, Dinge zu beschleunigen. Funktioniert prima bisher für select-Anweisungen, aber ich habe nicht in der Lage gewesen, um herauszufinden, wie Einsatz vorab kompilieren, zu aktualisieren oder Aussagen löschen.

Zugegeben, wenn Sie das Einfügen, Löschen oder in LINQ to SQL zu aktualisieren, müssen Sie das Objektmodell verwenden. Aber offensichtlich irgendwo auf dem Weg erzeugt es eine Abfrage, die schön wäre, vorab zusammenstellen und an einem statischen Element.

Ist das möglich? Was LINQ Leistung wie für Updates, löscht und Einsätze, wenn seine nicht vorkompiliert? Ich konnte sehen, es ist viel schneller als die wählt ist, weil das, was sie tun, darunter viel einfacher ist und weniger „dynamisch“ ...

Veröffentlicht am 09/12/2008 um 22:08
quelle vom benutzer
In anderen Sprachen...                            


3 antworten

stimmen
8

Es gibt einen großen Unterschied. Linq-To-SQL SELECT-Abfragen können große komplexe Ausdrücke Bäume sein. Seine diese, die irgendwann in Anspruch nehmen ‚Kompilieren‘. In diesem Fall Koaleszieren zu einem gewissen T-SQL, die ein SQL Server ausgeführt werden können. So macht es Sinn, das Ergebnis einer Operation in der Cache, so dass sie wiederverwendet werden können.

Aber auch andere löschen, aktualisieren und Einfügen sind einfache Operationen, die auf T-SQL umgewandelt wird nicht ein Ausdruck Baum erfordern (LINQ selbst ist über die Abfrage). Es ist nur schade, dass wir trainiert haben von SQL-Code zu denken, dass diese Vorgänge als ‚Abfragen‘ führt, sind wir nicht actuall für jede Info zu fragen.

Diese Operationen werden nur durch die Datacontext nicht von LINQ daher den Code definiert diese Funktionen auszuführen ist bereits zusammengestellt.

Beantwortet am 09/12/2008 um 22:46
quelle vom benutzer

stimmen
3

Ich denke an die drei nur Einsatz würde Sinn der Lage sein, zu kompilieren und wiederverwenden, weil Lösch trivial einfach ist (aus Tabelle DELETE WHERE Key ...) und UPDATE nur die Felder aktualisiert, die sich geändert haben und so variiert je nach Aktualisierungsvorgang.

[) Amien

Beantwortet am 10/12/2008 um 07:03
quelle vom benutzer

stimmen
0

L2S verwendet „sp_executesql“ so, nachdem Sie es das erste Mal, führen Sie es in der gespeicherten Prozedur Ausführungsplan-Cache sein. Nachfolgende Durchläufe (von der gleichen Abfrage - nicht gleicher params) werden den kompilierte Plan aus dem Cache wiederverwenden. Also, was Sie fordern automatisch von SQL Server behandelt wird ‚hinter den Kulissen‘.

Beantwortet am 10/12/2008 um 12:43
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more