2016-07-15 2 views
1

EF 마이그레이션에서 SQL() 명령을 실행할 때 현재 SQL 시간 제한이 발생합니다.엔티티 프레임 워크 마이그레이션을 실행할 때의 SQL 제한 시간

상황 : 한 묶음 (> 50) 테이블을 하나의 테이블로 바꾸고 새 테이블에 드롭하려는 테이블의 데이터를 변환해야합니다. 마이그레이션을 다음과 같이 구성했습니다.

1. 새 테이블을 만듭니다.

  1. 동일한 마이그레이션에서 SQL() 함수를 사용하여 데이터를 마이그레이션하는 SQL 스크립트를 실행하십시오.

3. 모든 이전 테이블을 삭제하십시오.

현재 이주는 다음과 같은 오류를 제공합니다 :

System.Data.SqlClient.SqlException (0x80131904): Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. The statement has been terminated. ---> System.ComponentModel.Win32Exception (0x80004005): The wait operation timed out

오류 내가 그들에게 설치를 제공하는 환경에서 일어나고, 그들은 나없이 참여 실행, 그래서 수동으로 할 수 없습니다 개별 마이그레이션을 실행하고 중간에 SQL 스크립트를 실행하기 위해 일시 ​​중지합니다.

연결에 대한 제한 시간을 변경하거나이 문제를 해결할 수있는 방법이 있습니까?

환경 :

EF 6.0 코드 먼저

SQL 서버 2012

답변

1

당신은 연결 문자열에 연결 제한 시간을 설정 할 수 있어야한다, 뭔가 같은 :

Connection Timeout=180; 
+0

마이그레이션만으로 시간 제한을 변경할 수는 없습니까? 연결 문자열에서 그것을 변경하면 응용 프로그램 사용자도 변경할 수 있으므로 원하지 않습니다. – AXMIM

+0

"패키지 관리자 콘솔"을 사용할 때 연결 문자열을 수동으로 덮어 쓸 수 있음을 알았지 만 자동 마이그레이션에 어떻게 사용할 수 있는지는 알 수 없습니다. – AXMIM

1

참조 이 answer. 이 방법

Use Configuration.cs file to set custom time out:

internal sealed class Configuration :

DbMigrationsConfiguration<ApplicationDbContext> 
{ 
    public Configuration() 
    { 
     AutomaticMigrationsEnabled = false; 
     ContextKey = "YourDbContext"; 

     // New timeout in seconds 
     this.CommandTimeout = 60 * 5; 
    } 
} 

은 만 마이그레이션하고 모든 사람 기본 연결 문자열을 사용하여 제한 시간을 변경할 수 있습니다.