2010-12-13 4 views
0

EF와 SQL을 실행하는 중에 문제가 있습니다. 나는 C# 코드 (EF/LINQ)로 잘 변환되지 않는 미친 저장 프로 시저를 가지고있다. 기본적으로, 내가하는 일은 SqlConnection과 SqlCommand 호출 (System.Data.SqlClient) [아래 참조]로 저장 프로 시저를 호출 한 다음 EF를 사용하여 테이블에서 데이터를 가져옵니다. 메인 테이블이 고갈 될 때까지 이런 일이 계속 반복됩니다. (나는 수십만 개의 레코드가있는 주 테이블을 가지고 있으며 저장된 proc은 그 중 작은 부분을 가져 와서 처리 할 테이블에 둔다. 일단 처리되면 그 레코드는 메인 테이블에서 제거되고 다시 메인 테이블이 완전히 처리되었습니다).SQL 호출로 업데이트 할 때 EF에서 테이블이 업데이트되지 않습니까?

문제는 테이블이 C#에서는 업데이트되지 않지만 백엔드에서 업데이트되고 있다는 것입니다.

SqlConnection sqlConn; 
    SqlCommand sqlCommand; 

    using (sqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["AppMRIConnection"].ConnectionString)) 
    { 
     using (sqlCommand = new SqlCommand(String.Format("EXEC sp_PullFinalDataSetPart '{0}', '{1}'", sLocation, sOutputFileType), sqlConn)) 
     { 
      sqlConn.Open(); 
      sqlCommand.ExecuteNonQuery(); 
      sqlConn.Close(); 
     } 
    } 

FinalDataSetPart 테이블과 X 새 레코드와 재로드를 잘라 :

그래서 여기에 SQL 호출입니다.

는 C#에서 호출입니다

List<FinalDataSetPart> lstFinalPart = db.FinalDataSetPart.ToList(); 

이 호출에 관계없이 항상 테이블에 실제로 무엇로드 된 첫 번째 finaldatasetpart 테이블을 얻을 것이다. 그 호출은 루프 내부에 있습니다. (코드를 깰 수 있고 루프 반복마다 그 메소드를 호출 할 수 있습니다.)

이런 사람이 전에 본 사람이 있습니까?!

모든 의견/도움말/정보는 크게 감사하겠습니다.

감사합니다.

+1

SQL 프로파일 러를 시작하고 모니터링하는 것이 좋습니다. 후속 호출이 현재 메모리에있는 객체를 반환하는 동안 EF 컨텍스트는 초기 호출 만 수행 할 수 있습니다. – e36M3

답변

0

새 데이터를 가져올 때 임시 테이블에서 ID가 변경 되었습니까? 기본 ID가 변경되지 않으면 EF는 데이터 변경을 감지하지 않습니다.

새 데이터를 가져올 때마다 컨텍스트를 다시 작성 하시겠습니까?

+0

그래, 내가 문맥을 삭제하고 다시 만들어야했다. 나는 그 단계를 놓치고 있었다고 생각한다! 감사! – SlackerCoder

관련 문제