Jesteśmy modelowania skomplikowany system opiera się na skomplikowanej relacji podmiotu w Dynamics CRM 4.0Stepping MVC Mini Profiler bez zagnieżdżonych usings
Ze względu na charakter rozwoju musieliśmy wdrożyć repozytorium wzór stylu i mają wiele różnych dostawców, którzy odnoszą się do siebie nawzajem.
Co naprawdę chcę zrobić, to profilować swoje konstruktory i różne leniwy pobierające, ale chcę modelować to na najwyższym poziomie możliwym.
Problem leży oczywiście w zakresie - jeśli zawinę konstruktora w bloku przy użyciu, nie będzie on dostępny dla niczego innego. Jeśli rozszerzam blok przy użyciu tak, aby wszystko, co odwołuje się do obiektu, który profiluję, wchodzi w zakres, to profiler nie jest tylko profilowaniem konstruktora - jest to synchronizowanie wszystkiego.
Podobnie, istnieje poziom zagnieżdżenia, jeśli poprawnie zagnieżdżę użytki, kod stanie się nieczytelny.
Spojrzałem na Profiler.Inline, ale to nie służy moim celom.
Co Naprawdę chciałbym zrobić to w ten sposób:
ref = Profiler.StartStep("Creating CRM Model");
//Do horrible CRM work
var myNewHorribleObject = CRM.ModelHorribleStuff(...);
Profiler.StopStep(ref);
ref = Profiler.StartStep("How long does it take to get X");
var data = Repository.GetSomething(myNewHorribleObject.SomeId);
Profiler.StopStep(ref);
ref = Profiler.StartStep("How long does it take to get Y");
var newData = Repository.GetSomethingElse(myNewHorribleObject.ContextId);
Profiler.StopStep(ref);
Czy to ma sens? Mam nadzieję, że przegapię coś w Mini Profiler, ale z przyjemnością przyjmuję wszelkie sugestie!
Chciałbym przebudować kod nieco, ale nie ma na to czasu i chociaż wygląda na dziwne, mamy całkiem niezłą złożoność cykliczną.
Brilliant, dziękuję! –
Należy zauważyć, że jeśli MiniProfiler nie zostanie uruchomiony, wówczas wykonanie kroku będzie zerowe, więc będziesz potrzebował "if (executingStep! = Null) wykonującyStep.Dispose()" dla tego przypadku. – eddiegroves