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 테이블을 얻을 것이다. 그 호출은 루프 내부에 있습니다. (코드를 깰 수 있고 루프 반복마다 그 메소드를 호출 할 수 있습니다.)
이런 사람이 전에 본 사람이 있습니까?!
모든 의견/도움말/정보는 크게 감사하겠습니다.
감사합니다.
SQL 프로파일 러를 시작하고 모니터링하는 것이 좋습니다. 후속 호출이 현재 메모리에있는 객체를 반환하는 동안 EF 컨텍스트는 초기 호출 만 수행 할 수 있습니다. – e36M3