Dapper.NET 연결 / 쿼리 모범 사례

.net asp.net c# dapper sql-server

문제

그래서 나는 많은 링크 / SO 질문을 읽었지 만 나는 이것에 대한 명확한 답을 얻을 수 없다.

ASP.NET 응용 프로그램에서 Dapper를 사용하여 SQL 쿼리를 수행 할 때 연결을 열거 나 닫는 가장 좋은 방법은 무엇입니까?

다음은 현재 내가 따르는 패턴입니다.

using (var db = new SqlConnection(_connectionString))
{
    return db.Query("dbo.SomeQuery");
}

기본적으로 SQL 연결은 필요할 때마다 열거 나 닫습니다.

내 이해에서 위의 코드는 자동으로 SQL 연결을 열거 나 닫아야합니다 (예 : db.Open 또는 db.Close 를 명시 적으로 수행 할 필요가 없습니다).

내가보고있는 문제는 잠시 후, 나는 이러한 오류를 많이 얻고있다 :

InvalidOperationExceptionTimeout이 만료되었습니다. 풀에서 연결을 가져 오기 전에 시간 초과 기간이 경과했습니다. 이는 풀링 된 모든 연결이 사용 중이며 최대 풀 크기에 도달했기 때문에 발생했을 수 있습니다.

이 기간 동안 SQL 프로파일 러 추적을했는데 아무것도 차단할 긴 쿼리가 표시되지 않으므로 내 ASP.NET 웹 응용 프로그램의 연결이 끊어지는 것처럼 보입니다 (너무 오래 걸리는 것과는 반대로). 쿼리를 실행).

누군가 내가 뭘 잘못하고 있다고 말할 수 있습니까?

사이드 노트 : 내 응용 프로그램은 Azure 웹 응용 프로그램으로 실행되므로 불행히도 실제로 얼마나 많은 연결이 웹 응용 프로그램에서 열리고 있는지 확인할 수 없습니다. :(

인기 답변

내 의견을 귀하의 연결을 닫는 문을 사용하여하지만 당신이 explicity이 같은 연결을 열어 말할 :

using (var db = new SqlConnection(_connectionString))

{
       db.open();

    return db.Query("dbo.SomeQuery");
}


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.