세 번째 라이브러리에서 SqlMapper GridReader를 실행 한 후 자동으로 SqlConnection을 닫는 방법

dapper

문제

여기에 내 자신의 도우미에서 코드 조각이지만, 그것은 몇 가지 결함이 있습니다.

  /// <summary>
  /// Execute a command that returns multiple result sets, and access each in turn
  /// </summary>
  public static  SqlMapper.GridReader QueryMultiple(string sql, dynamic param = null, string connectionName = null)
  {

      using (SqlConnection connection = GetOpenConnection(connectionName))

      { return connection.QueryMultiple(sql, param);}

  }

QueryMultiple이 호출되고 외부 프로그램에 의해 수동으로 닫힙니다. 잠시 후 SqlConnection이 자동으로 닫혀 야합니다. 내 도우미를 처리하는 방법은 무엇입니까? 미리 감사드립니다.

수락 된 답변

이상하게도 여기에 하나의 옵션이있을 수 있습니다 : 개방형 연결을 제공하지 마십시오. 이것은 아직 Nuget에 배포되지 않았지만 github에서 버전을 가져온다면 실제로 필요한 경우 연결을 훨씬 더 많이 제어 할 수 있습니다. 모든 주요 메소드 ( Query[<T>] , QueryMultiple , Execute )는 이제 닫힌 연결에서 정상적으로 작동하고 QueryMultiple 때 다시 닫습니다. 그래서 대신에 당신은 :

return GetClosedConnection(connectionName).QueryMultiple(sql, param);

GridReader 가 데이터의 끝에 도달하면 자동으로 닫힙니다. 메소드를 종료 할 때 커넥션을 Dispose() 하지 않도록하기 위해 다시 구조화했습니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow