Rus*_*rke 7 c# crm dynamics-crm-4 mvc-mini-profiler
我们基于Dynamics CRM 4.0中复杂的实体关系对复杂系统进行建模
由于开发的性质,我们必须实现存储库样式模式,并且具有许多彼此相关的不同提供者.
我真正想要做的是描述他们的构造函数和各种懒惰的getter,但我想在顶层建模.
问题当然是Scope - 如果我将构造函数包装在using块中,它就不可用于其他任何东西.如果我扩展using块以便引用我正在分析的对象的所有内容都进入范围,那么探查器不仅仅是对构造函数进行分析 - 它是其他所有内容的计时.
同样,有一定程度的嵌套,如果我正确嵌套使用,那么代码就变得不可读了.
我已经看过Profiler.Inline,但这不符合我的目的.
我真正想做的是:
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);
那有意义吗 ?希望我在Mini Profiler中忽略了一些东西,但我欢迎任何建议!
我想稍微改造代码,但是没有时间,虽然它看起来很奇怪,但实际上我们有很好的圈复杂度.
是的,这是可能的.而不是使用using只是使用"MiniProfiler.Current.Step("blah")".这将返回一个实现的对象IDisposeable.当实际处理该对象时,时间将停止.你甚至可以像平常一样用using语句来嵌套东西.
例:
 IDisposable executingStep;
 executingStep= MiniProfiler.Current.Step("Some code after this");
 // do long code
 Thread.Sleep(100);
 using (profiler.Step("Step 2313"))
 {
     Thread.Sleep(100);
 }
 executingStep.Dispose();
| 归档时间: | 
 | 
| 查看次数: | 897 次 | 
| 最近记录: |