2010-05-17 6 views
1

Je commence à développer une nouvelle application asp.net basée sur subsonic3 (pour les requêtes) et log4net (pour les logs) et je voudrais savoir comment interfacer subsonic3 avec log4net pour que log4net connaisse le sous-jacent sql utilisé par subsonic.Comment se connecter subsonic3 sql

C'est ce que j'ai jusqu'à présent:

public static IEnumerable<arma_ocorrencium> ListArmasOcorrencia() 
    { 
     if (logger.IsInfoEnabled) 
     { 
      logger.Info("ListarArmasOcorrencia: start"); 
     } 

     var db = new BdvdDB(); 
     var select = from p in db.arma_ocorrencia 
           select p; 

     var results = select.ToList<arma_ocorrencium>(); //Execute the query here 

     if (logger.IsInfoEnabled) 
     { 
      // log sql here 
     } 


     if (logger.IsInfoEnabled) 
     { 
      logger.Info("ListarArmasOcorrencia: end"); 
     } 

     return results; 
    } 

Répondre

1

Vous pouvez utiliser la propriété Log de la classe du fournisseur:

_db.Provider.Log = Console.Out; 

enregistrera vos instructions SQL à la console. Si vous voulez utiliser log4net ou quelque chose de similaire, vous devrez écrire une petite classe de médiateurs qui implémente TextWriter et redirige toutes les entrées reçues vers log4net.

0

Vous pouvez obtenir le SQL généré comme ceci:

string sql = select.GetQueryText(); 

Assurez-vous que vous utilisez la version 3.0.0.4 ou au-dessus.

Vive

+0

Je reçois cette erreur, et oui j'utilise 3.0.0.4: System.Linq.IQueryable » ne contient pas de définition de « GetQueryText » et aucune méthode d'extension « GetQueryText » acceptation un premier argument de type 'System.Linq.IQueryable ' pourrait être trouvé (manque-t-il une directive using ou une référence d'assembly?) –

Questions connexes