LINQ-to-SQL CompiledQuery.Compile () az Update, Delete beírása?

szavazat
6

Minden,

Tehát megvan az én válasszuk lekérdezéseket LINQ-to-SQL átállítását CompiledQueries, hogy gyorsítsák fel a dolgokat. Kiválóan működik, amennyiben az állítások válasszuk, de nem tudták, hogy kitaláljuk, hogyan lehet előre összeállítani insert, update vagy delete nyilatkozatokat.

Nyújtott, amikor beillesztjük, töröljük vagy frissítése a LINQ-to-SQL, akkor használja az objektum modell. De nyilvánvalóan valahol az út mentén, hogy létrehoz egy lekérdezést, ami jó lenne előre összeállítja és tárolja egy statikus tagja.

Van erre lehetőség? Mi LINQ teljesítményét, mint a frissítéseket, törli és betétek, amikor az előzetesen nem készülnek? Láttam, hogy egy sokkal gyorsabb, mint a kijelölésre, mert amit csinálnak alatt sokkal egyszerűbb és kevésbé „dinamikus” ...

A kérdést 09/12/2008 22:08
a forrás felhasználó
Más nyelveken...                            


3 válasz

szavazat
8

Van egy nagy különbség. Linq-To-SQL lekérdezések válasszuk nagy lehet összetett kifejezéseket fák. A ezek, amelyeknek valamikor „összeállítása”. Ebben az esetben a coalescing bizonyos T-SQL, hogy lehet futtatni egy SQL Server. Így van értelme a cache az eredmény egy művelet úgy, hogy lehet újra felhasználni.

Azonban más törlése, Frissítés és Insert egyszerű műveletek, amelyek nem igényelnek kifejezésfa alakítandó T-SQL (LINQ maga szól lekérdező). Ez csak szerencsétlen, hogy már képzett gondolni SQL-kódot, amely elvégzi ezeket egyéb műveletek tekintetében „lekérdezés”, mi nem actuall kérnek minden info.

Ezeket a műveleteket csak által meghatározott DataContext nem LINQ így a kódot, amellyel ezeket a funkciókat már össze.

Válaszolt 09/12/2008 22:46
a forrás felhasználó

szavazat
3

Azt hiszem, a három csak betét lenne értelme, hogy képes legyen lefordítani és újra használható, mivel a törlés triviálisan egyszerű (DELETE FROM asztal, ahol Key ...), és a frissítést csak frissíti a mezőket, amelyek megváltoztatták és így változik, frissítési művelet.

[) Amien

Válaszolt 10/12/2008 07:03
a forrás felhasználó

szavazat
0

L2S használ „sp_executeSQL”, így futtatása után ez az első alkalom lesz a tárolt eljárás végrehajtását terv cache. Későbbi fut (az azonos lekérdezés - nem azonos params) lesz újra összeállított terv a gyorsítótárból. Tehát mit kér a automágikusan kezeli az SQL Server „a színfalak mögött”.

Válaszolt 10/12/2008 12:43
a forrás felhasználó

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