2014-12-16 6 views
0

50K 행처럼 반환하는 EntityFramework select 문이 있습니다. 이 간단한 선택 명령에 대해이 예외가 발생합니다.EntityCommandExecutionException : 시간 종료가 만료되었습니다. 작업이 완료되기 전에 시간 초과 기간이 경과하거나 서버가 응답하지 않습니다.

var db = new DBEntity(); 
db.CommandTimeout = 350; 
var actCosts = (from i in db.Products 
          where i.productID== productID 
          select i).ToList(); 

데이터베이스가 Azure에 있습니다. 나는 모든 데이터를 가지고 4:30 분 걸리는 행을 검색하는 데 걸리는 실제 시간을 알고 SSMS를 통해 연결되어 있습니다. 그래서 Commandtimeout을 350 초로 설정했습니다. 그러나

이되는 일을 didnt한다이 시간에 데이터를 반환하는 경우, 참조) 위의와 .FirstOrDefault을 (실행하려면이 하나

var actCosts = db.Products.Where(t => t.productID== productID).ToList(); 
+0

큰 시간 제한을 설정하려고 시도 했습니까? SMSS는 데이터를 검색하는 다른 방법을 사용하며이를 위해 아마도 최적화되어 있습니다. 먼저 .FirstOrDefault()를 실행하여 시간 내에 데이터를 반환하는지 확인하십시오. –

+0

시간 제한은 어디에서 설정합니까? –

+0

var db = 새 DBEntity(); db.CommandTimeout = 350; – Vivekh

답변

0

첫 번째 시도 사이의 성능 차이

var actCosts = (from i in db.Products 
          where i.productID== productID 
          select i).FirstOrDefault(); 

작동하는 경우 1000보다 큰 더 큰 시간 초과를 설정하고 결과가 반환되는지 확인하는 것이 좋습니다.

SSMS는 데이터를 검색하는 다른 방법을 사용하며 단순한 .ToList() 메소드보다 데이터를 더 잘 최적화 할 수 있다고 생각합니다.