Entity Framework 시간 초과 해결: 종합 가이드
대규모 데이터 세트에 대한 EF(Entity Framework) 쿼리는 때때로 기본 제한 시간(일반적으로 30초)을 초과할 수 있습니다. 연결 문자열의 CommandTimeout
을 조정한 후에도 여전히 문제가 발생할 수 있습니다. 이는 EF가 시간 초과를 처리하는 방법에 대한 오해에서 비롯되는 경우가 많습니다.
연결 문자열 설정의 함정
많은 개발자가 연결 문자열 내에서 Default Command Timeout
를 설정하면 EF의 시간 초과 동작에 직접적인 영향을 미친다고 잘못 믿고 있습니다. 그러나 이는 효과가 없으며 알려진 제한 사항입니다(버그 ID 56806 참조: https://www.php.cn/link/91a448039265fc4a83f545a4945e37a3
해결책: 직접 시간 초과 제어
올바른 접근 방식은 EF 컨텍스트 수준에서 시간 초과를 명시적으로 관리하는 것입니다. 이렇게 하면 시간 초과 설정이 쿼리에 적용됩니다. 구현은 EF 버전에 따라 약간 다릅니다.
Entity Framework Core 1.0 이상:
<code class="language-csharp">this.context.Database.SetCommandTimeout(180);</code>
Entity Framework 6:
<code class="language-csharp">this.context.Database.CommandTimeout = 180;</code>
엔티티 프레임워크 5:
<code class="language-csharp">((IObjectContextAdapter)this.context).ObjectContext.CommandTimeout = 180;</code>
Entity Framework 4 이하:
<code class="language-csharp">this.context.CommandTimeout = 180;</code>
CommandTimeout
을 180초(또는 쿼리에 더 적합한 기간)와 같은 값으로 설정하면 데이터베이스 작업에 허용되는 실행 시간을 직접 제어하여 상당한 데이터 세트가 있어도 시간 초과를 효과적으로 방지할 수 있습니다. 특정 요구 사항에 따라 이 값을 조정하는 것을 잊지 마세요.
위 내용은 대규모 데이터 세트가 있는 경우에도 Entity Framework 시간 초과를 효과적으로 해결하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!