Come utilizzare il suggerimento NOEXPAND con LINQ to SQL?
-
01-10-2019 - |
Domanda
Ho una vista indicizzata che ho bisogno di specificare il suggerimento NOEXPAND per in modo che esso per eseguire ragionevolmente. Purtroppo, come visto a proposito modificando il LINQ to SQL generati interrogazione T-SQL dal suggerimento NOLOCK sembra che non v'è alcun modo semplice per sfruttare questi suggerimenti direttamente o c'è?
Il mio pensiero è che avrebbe senso per consentire la personalizzazione di questa roba attraverso l'uso di attributi o dichiarativo attraverso la dbml. Anche perché LINQ to SQL sembra solo il lavoro mira SQL Server ha senso solo che siamo anche in grado di sfruttare queste caratteristiche avanzate (se esiste). A prescindere dalla realizzazione anche se mi interessa in alcun modo creativo di risolvere questo problema.
Soluzione
ho trovato una soluzione che sembra funzionare, ma richiede che una seconda vista per ogni visualizzazione SQL che si vorrebbe utilizzare il suggerimento NOEXPAND con. Nella seconda vista basta selezionare tutti i campi dal punto di vista originale e virare sul suggerimento NOEXPAND. Qualsiasi LINQ to query SQL che deve utilizzare il suggerimento NOEXPAND può ora solo obiettivo che vista che avvolge l'originale.
Maggiori dettagli si possono trovare in questo messaggio MSDN .
Un lato negativo, tra gli altri da prendere in considerazione durante la creazione di viste dipendenti è che si dovrà fare in modo di applicare gli script di creazione nel corretto ordine di dipendenza
Qualcuno ha alternative migliori? Preferirei non avere per creare viste SQL in più solo per l'utilizzo di questo supporto necessario hint di ottimizzazione.
Altri suggerimenti
Sono assolutamente d'accordo, ma io non credo che ci sia un tale metodo. In EF4 è possibile utilizzare il ExecuteStoreCommand
che vi permetterà di eseguire direttamente SQL. Questo può essere l'unica opzione se la performance è inaccettabile.
== EDIT ==
Si può anche fare questo in LINQ to SQL attraverso il metodo ExecuteQuery
.