2014-09-08 5 views
0

에서 "x 개의 일치하는 결과가 발견되었습니다."제 의견으로는 단순한이 솔루션을 찾으려고했지만 Entity Framework 및 LINQ에 맞는 솔루션을 찾을 수 없었습니다. 그래서, 나는 아주 사소한 것을 놓치고 있거나 제대로 요구 사항을 말할 수 없다.EF6 LINQ

어쨌든 예전의 ASP/ASP.NET 프로젝트에서 나는 "결과가 1320ms에 1 개의 일치하는 결과를 찾았습니다"와 같이 웹 사이트 방문자에게 출력되는 것을 봅니다. 나는 이런 종류의 정보를 새로운 EF6 MVC 5, Razor 프로젝트에도 표시하고 싶습니다. 적어도 디버깅 목적으로. 하지만 내 C# 코드에서이 구현하는 방법을 찾을 수 없습니다.

잘하면,이 일을하기가 쉽습니다.

감사합니다.

P. 밀리 초 부분은 나에게 더 중요합니다.

+0

서비스 메서드 호출 사이에 성능 타이머를 사용하고이를 사용하십시오. 'var timer = Timer.Start(); var results = Service.search(); var ms = timer.Stop(). Duration;'EF6에서는 내가 아는 한 쿼리 실행 시간 정보를 제공하지 않습니다. 우리는 일반적으로 도우미 Timer 대리자가이 목적을 위해'var ms = Timer.Measure (() => {// 실행 시간을 측정하는 코드}) '를 가지고 있습니다. – cackharot

+1

디버깅 목적으로 만 사용하는 경우 [MiniProfiler] (http://miniprofiler.com/) 또는 [Glimpse] (http://getglimpse.com/)에서 이러한 종류의 세부 사항 등을 제공합니다. –

+0

감사합니다, cackharot. 불행히도, 내가 사용하는 Timer 라이브러리가 무엇이든 상관없이, 나는이 오류를 얻는다 : " 'System.Timers.Timer'는 'Measure'에 대한 정의를 포함하지 않는다. – Donatas

답변

1

당신은이 표시 스톱워치 및 ViewModels의 조합을 사용할 수 있습니다

public class MyCustomViewModel 
{ 
    public TimeSpan QueryDuration { get; set;} 
    public IEnumerable<SomeModelClass> Persons { get; set; } 
} 

public ActionResult MyActionMethod() 
{ 
    var vm = new MyCustomViewModel(); 

    Stopwatch _watch = Stopwatch.StartNew() 
    vm.Persons = executeQueryHere().ToList(); 
    vm.Queryduration = _watch.Elapsed; 
    return View(vm); 
} 

당신이 당신의 쿼리를 실현되지 않는 경우이 때문에 지연된 실행을, 잘못 될 수 있음을 유의하시기 바랍니다 - 통화 할 .ToList() 또는 AsEnumerable<> 이것은 간단한 코드를 작성하는 간단한 방법입니다.

는 편집 : -와 Glimpse 다음 방법으로 더 나은 일을 할

다른 써드 파티 라이브러리 나는 MiniProfiler (화면의 왼쪽 상단 www.nerddinner.com에서 예)입니다 수 있습니다.

+0

감사합니다, Serv! 귀하의 솔루션이 작동하지만, 그 솔루션의 실제 논리에 문제가 있습니다 - MVVM을 사용하는 방법과 결과를 MVVM에 보관하는 방법. 어쨌든, 그럼에도 불구하고 질문에 대답했습니다. – Donatas