Quantcast
Channel: devstyle.pl | Maciej Aniserowicz » visual studio
Viewing all articles
Browse latest Browse all 18

SQL z NHibernate w konsoli Visual Studio

$
0
0

NHibernate posiada zmienną show_sql, której ustawienie na "true" powoduje wypluwanie na konsolę wszystkich SQLi idących do bazy. Zachciało mi się pewnego dnia podpiąć po prostu debuggerem pod aplikację i zobaczyć te SQLe w Visualu, w okienku Output. Była to aplikacja web – więc konsoli brak. Trial na nhprof akurat się skończył:), więc w danej minucie również niewiele można było na to poradzić.

Rozwiązaniem najprostszym okazała się podmiana docelowego miejsca zapisu wszystkich informacji wypluwanych na konsolę. Zamiast Console.WriteLine() chciałbym mieć wszędzie System.Diagnostics.Debug.WriteLine() Z konsoli w całej mojej aplikacji i tak korzysta tylko NH, więc pomysł był fsamras.

Kluczem do sukcesu okazała się metoda Console.SetOut() pozwalająca na wpięcie się w proces pisania na konsolę. Wystarczy taka "klaska":

  1:  public class CustomDebugWriter : TextWriter
  2:  {
  3:      public override void WriteLine(string value)
  4:      {
  5:          Debug.WriteLine(value);
  6:          base.WriteLine(value);
  7:      }
  8:  
  9:      public override void Write(string value)
 10:      {
 11:          Debug.Write(value);
 12:          base.Write(value);
 13:      }
 14:      public override Encoding Encoding
 15:      {
 16:          get { return Encoding.UTF8; }
 17:      }
 18:  }

i taka instrukcja gdzieś przy starcie systemu:

  1:  #if DEBUG
  2:            Console.SetOut(new CustomDebugWriter());
  3:  #endif

żeby mieć NHIbernatowego SQLa fruwającego w Output aż miło.

P.S. Dodatkowo NH umożliwia podpięcie wielu różnych loggerów za pomocą biblioteki Common.Logging (tutaj opis jak to zrobić dla nLog), ale chciałem coś na szybko, już, teraz.

The post SQL z NHibernate w konsoli Visual Studio appeared first on devstyle.pl | Maciej Aniserowicz.


Viewing all articles
Browse latest Browse all 18

Latest Images

Trending Articles





Latest Images