2011-04-28 7 views
2

아래 코드에서 foreach 루프가 발생하면 "결과"가 강조 표시 될 때까지 디버거를 실행 한 다음 그 시점에서 코드 실행을 중지하고 예외가 발생하거나 아무 것도 발생하지 않습니다.내 Linq 쿼리를 디버그 할 수 없습니까?

여기에 뭔가 잘못되어있을 때 왜 어떤 오류 메시지도 표시하지 않는 이유는 모르겠습니다.

var result = 
    from a in db.table 
    select new {table = a}; 

foreach(var row in result){ 
    ... 
} 
+1

전원을 껐다가 다시 시도해 보셨습니까? – Bastardo

답변

3

Linq 쿼리를 디버깅 할 때 디버거에서 IQueryable의 내용을 검사하는 대신 목록 또는 배열로 병합하는 것이 더 쉽습니다.

시도 퍼팅 :

var resultList = result.ToList(); 

..after 쿼리; 그 줄 바로 뒤에 중단 점을 놓습니다; 디버거에서 resultList의 내용을 확인하십시오.

1

나는 실제로 목록을 횡단하고 있다고 생각합니다. 큰 테이블이나 복잡한 쿼리가있는 경우 실행하는 데 몇 초가 걸립니다.

foreach 루프를 넘어선 적이 있습니까?

0

아마 데이터베이스에서 행이 나올 때까지 기다리고 있으며 잠금 경합이 발생하여 앱이 정지되고 액세스하려는 테이블의 잠금이 해제 될 때까지 기다릴 수 있습니다. 이는 오류 조건이 아니며 예외도 발생하지 않아야합니다. 예를 들어, 액세스하려는 테이블에 동시에 쓰는 작성자 또는 특히 긴 트랜잭션에서 배타적 테이블 잠금을 획득 한 다른 접근자가 있습니까?

관련 문제