2011-12-09 14 views
14

Ho recentemente iniziato a utilizzare LinqPad e ho acquistato l'opzione di completamento automatico e mi piace davvero tanto. Questo è un prodotto eccellente!Come si imposta Command Timeout in Linqpad?

Volevo chiedere se esiste un modo per controllare il timeout del comando utilizzato durante l'interrogazione di un database SQL Server in LinqPAD (sto usando le istruzioni C#)? Non riesco a vedere dove abbiamo accesso alla stringa di connessione effettiva e ho alcune query di grandi dimensioni per i rapporti che scadono. Sembra che il timeout sia hardcoded a 30 secondi.

Grazie in anticipo per qualsiasi aiuto!

risposta

15

Ho eseguito query che hanno richiesto minuti e non hanno mai avuto un timeout di comando. Detto questo, ecco come si cambia ...


Tutto il lavoro si esegue all'interno di un UserQuery. Il CommandTimeout è una proprietà di questo.

this.CommandTimeout = 60; 

Dai un'occhiata a tutte le proprietà sotto this. Ti dà una buona visione di alcune delle cose che puoi fare.

+0

GRAZIE! (Soprattutto per la risposta quasi immediata! (Prendendomi a calci per non aver controllato 'questo'!) (Dato che lo faccio un milione di volte al giorno con il mio codice!) Comunque, ha funzionato perfettamente! – blairh

+0

È una bella funzionalità Non sono sicuro del motivo per cui non è documentato meglio – DaveShaw

+0

@ user1090088 - Ti dispiacerebbe accettare la risposta in linea con lo stile SO: http://stackoverflow.com/faq#howtoask? Grazie. – DaveShaw

7

Come accennato in @DaveShaw's answer quando si interroga un database SQL Server in LINQPad utilizzando una connessione 'normale', è possibile utilizzare:

this.CommandTimeout = 60 

Tuttavia, questa struttura non è disponibile quando LinqPad connects to DB using an EF-library. Uso this.CommandTimeout risultati in:

stato trovato

'UserQuery' non contiene una definizione per 'CommandTimeout' e nessun metodo di estensione 'CommandTimeout' accettare un primo parametro di tipo 'UserQuery' (premere F4 per aggiungere un utilizzando direttiva o montaggio di riferimento)

Alcuni sconcertante e una questa risposta about EF time-outs in general mi ha portato a utilizzare questo su un obiettivo EF-collegamento:

(this as IObjectContextAdapter).ObjectContext.CommandTimeout = 60;