Sto usando Entity Framework 6.1.3 e ho appena implementato un intercettore in modo da poter visualizzare l'SQL generato durante lo sviluppo locale. Qual è il metodo corretto per disabilitare questo intercettatore quando pubblico il mio sito nell'ambiente LIVE? Attualmente sto utilizzando una trasformazione della configurazione Web tramite Web Deploy durante la pubblicazione e voglio solo assicurarmi che il sito non stia cercando di scrivere su un file che non esiste.
Ho iniziato da questo articolo: https://msdn.microsoft.com/en-us/data/jj556606.aspx#Interceptors
Ecco la mia sezione di configurazione:
<interceptors>
<interceptor type="System.Data.Entity.Infrastructure.Interception.DatabaseLogger, EntityFramework">
<parameters>
<parameter value="C:\Temp\LogOutput.txt"/>
<parameter value="true" type="System.Boolean"/>
</parameters>
</interceptor>
Per il tuo scopo non hai bisogno di scrivere un intercettore. Puoi effettuare le seguenti impostazioni nel codice c #:
#if DEBUG
context.Database.Log = s => System.Diagnostics.Debug.WriteLine(s);
#endif
Dopodiché, quando esegui il debug, tutti gli sql generati verranno elencati nell'output. Puoi facilmente modificarlo per elencarlo anche in un file.
Per risolvere il tuo scenario, farei ciò che stai facendo e utilizzare le trasformazioni dei file di configurazione per assicurarmi che la sezione non finisca nell'ambiente live.
Un'altra opzione è iniziare a utilizzare gli intercettatori e impostarli nel codice utilizzando la classe DBInterceptors. Quindi userei le direttive C # per assicurarmi che il codice non venga chiamato quando si trova in modalità DEBUG. Maggiori informazioni su DBInterceptors qui Registrazione e intercettazione delle operazioni di database
Vorrei comunque usare la prima opzione.