MiniProfiler to świetne narzędzie do debugowania działania aplikacji w MVC. Po bardzo łatwym i szybkim skonfigurowaniu pozwala na pokazanie co dzieje w bebechach naszej aplikacji, prezentując je w dość przystępnej formie jak poniżej:
http://miniprofiler.com/ |
Jak widać na załączonym powyżej obrazku, MiniProfiler ma możliwość pokazywania także zapytań SQL, które się wykonują podczas działania naszego kodu. Niestety, ale dla nHibernate’a nie działa to z automatu oraz nie ma przygotowanej odpowiedniej paczki NuGet’a (u mnie ta – MiniProfilerContrib.NHibernate – nie zadziałała). Niestety.
Choć istnieje dobry profiler dla nH – nHibernate Profiler, to jego cena, jak na polskie warunki jest dość wysoka. Dla porządku podam, że istnieje jeszcze opcja kupna licencji na miesiąc co już przekłada się na znośniejsze ceny, ale zobaczmy czy możemy zrobić coś własnymi siłami.
Pokażę, jak wykorzystując logi NHibernate’a dodać pokazywanie zapytań SQL do MiniProfiler’a.
Wystarczy w swoim kodzie dodać klasy, które ładnie zostały zaprezentowane w poniższych Gist’ach:
Ten ostatni powinien niwelować problem, z zapytaniami wsadowymi. Trzeba w nim jeszcze dodać jakiegoś log’a albo usunąć odwołania do niego. Jak już je mamy w naszym projekcie to pozostało bardzo niewiele…
Wystarczy wskazać nHibernete’owi, aby używał naszego napakowanego sterydami sterownika do SQL. Ja we Fluent robię to używając słówka Driver jak poniżej.
I gotowe…możemy cieszyć swe oczy zapytaniami do bazy robionymi przez nHibernete’a w MiniProfilderze. Yupi!
Rozwiązanie nie jest 100% działające – są przypadki, że gdzie nie gdzie poleci wyjątek. Nie daje to też takich możliwości jak wspomniany na początku profiler. Mamy tylko informacje o zapytaniach (treść, parametry i czas trwania) i ich duplikatach. nHibernate Profiler robi trochę więcej (podpowiedzi, optymalizacje, wskazuje kod, gdzie dane zapytanie jest odpalane) ale jak na moje potrzeby analizowania i wykrywania duplikatów zapytań SQL jest w zupełności wystarczające.
Miłego profilowania aplikacji!
– Najciekawsze artykuły o .NET
Founder of Octal Solutions a .NET software house.
Passionate dev, blogger, occasionally speaker, one of the leaders of Wroc.NET user group. Microsoft MVP. Podcaster – Ostrapila.pl