2016-08-20 4 views
7

명령 시간 초과가 설정된 위치는 이전 버전과 더 이상 동일하지 않습니다.aspnetcore/entityframeworkcore에서 명령 시간 초과를 설정하는 방법

그러나 나는 이것을 바꿀 수있는 방법을 말하는 곳을 찾을 수 없습니다.

내가하고있는 일은 기본 30 초보다 오래 걸리는 매우 큰 파일을 업로드하는 것입니다.

+1

이 한 번 봐 [엔티티 프레임 워크 핵심 마이그레이션 시간 제한을 설정하는 방법?] (http://stackoverflow.com/questions/39006847/how-to-set-entity -framework-core-migration-timeout) -'Database.SetCommandTimeout'에 대한 응답 –

답변

7

당신이 당신의 상황에 맞는 더 나은 옵션이

공용 클래스 DbConnect 같은 설정을 통해 UR 상황시 CommandTimeout이 사용하는 것입니다

public class ApplicationDbContext : DbContext 
{ 
    public ApplicationDbContext() 
    { 
     Database.SetCommandTimeout(150000); 
    } 
} 
0

를 통해 변경할 수 있습니다 IConnnectDb {

개인 dbentitient의 _context;

생성자의 데이터베이스에 thie를 주입하십시오.

// 실제로 각 쿼리는 db에 대한 쿼리를 실행하기 전에 다음 메소드를 사용합니다.

_context.Database.SetCommandTimeout (400);

}

참고 : Efcore는 100 개 미만의 초 시간에 쿼리를 실행합니다. 재 시도가 계속되면서 결과를 볼 수 없게된다면

지금 내 경험으로 말하지만, 고칠 수 있다면 알려주세요 Efcore 1은 ef core 2.0보다 훨씬 더 빠릅니다./

5

DI 컨테이너를 사용하여 DbContext를 관리하는 경우 (즉, DbContext를 서비스 컬렉션에 추가하는 경우) 옵션에 명령 시간 제한을 지정할 수 있습니다. Startup.ConfigureServices에서

:

services.AddDbContext<YourDbContext>(options => 
    options.UseSqlServer(this.Configuration.GetConnectionString("YourConnectionString"), sqlServerOptions => sqlServerOptions.CommandTimeout(60)) 
);