이 두 가지 질문에 대한 대답은 내 대답에 매우 가깝지만 실제로 도달하지는 못합니다.열려 있거나 닫히지 않을 수있는 SqlConnection에서 닫기 호출
- Are Open and Closed only relevant values of ConnectionState enumeration?
- Handling different ConnectionStates before opening SqlConnection 지금은 내가 그 연결을 닫을 때이 작업을 수행 할 필요가 궁금,
SqlConnection
가 열어보다 더 상태가 알고 닫힌 것을
는 내부되지 않습니다 문를 사용하여 :
switch (_transactionConnection.State)
{
case ConnectionState.Broken: /*??*/ ; break;
case ConnectionState.Closed: ; break;
case ConnectionState.Connecting: /*??*/ ; break;
case ConnectionState.Executing: /*??*/ ; break;
case ConnectionState.Fetching: /*??*/ ; break;
default: _transactionConnection.Close(); break;
}
SqlConnection _transactionConnection
안에 아니다 이 클래스 외부에서 트랜잭션을 시작, 커밋 및 롤백해야하기 때문에 문이 using
입니다. 이 클래스는 IDisposable
구현하고 switch 문은 Dispose(bool disposing)
MSDN이 열려 이외의 폐쇄 상태는 제품의 향후 버전에 대한 것을 말한다에 살고 있지만, @Charlie 반사판이 다른 상태가 사용됩니다 보여줍니다 말했다.
누구나 /*??*/
을 대체해야한다고 말할 수 있습니까? (내 최종 switch 문을 명시 적으로 열기 및 닫힌 경우 처리 할 것으로 예상하고 다른 상태에 대해 /*??*/
동일합니다 경우 내 기본 경우.
내 코드가 Dispose() 내부에 없으면이 대답이 변경됩니까? – mafue
이 코드가 Dispose 내부에 없으면 말하기 어렵습니다. 요구 사항에 대한 자세한 정보가 없으면 사용자가 잘못된 경로에 있다고 의심 할 수 있으므로 구현 방식에 따라 이러한 구성 요소를 사용하는 방식을 검토해야합니다. – overslacked
충분합니다. 이 시나리오에서는 Dispose에 만족합니다. 어쨌든'using '이 Dispose를 호출하기 때문에 사람들이 선호하는 방식으로 SqlConnections를 열 때 SqlConnections가 닫히는 방식이어야합니다. – mafue