2009-02-27 5 views
1

1) 나는 다시 열고 동일한 연결에 닫고 SQLConnection 인스턴스 후에도 수있는 것으로 나타났습니다 :재 개방 SQLConnection 인스턴스

가) 당신이 뒤에서 무슨 일이 일어나고 있는지 말해 줄 수? 의미, 파일 스트림 개체를 닫은 후에 다시 열 수는 없지만 대신 새 개체를 만들어야합니다. 그렇다면 SqlConnection 개체가 왜 동일하지 않습니까?

b) 풀링을 사용하는 경우 연결 개체가 연결 풀로 반환되어 나중에 다시 사용할 수 있다고 가정합니다.

그렇다면 처음에 연결을 닫을 때와 동일한 Sqlconnection 인스턴스를 얻을 수 있다는 것을 어떻게 알 수 있습니까? 내가 아는 한 멀리 있기 때문에 연결 풀 사용할 수있는 여러 연결을 사용할 수있는 경우에도 이러한 SqlConnection 개체를 원래 다른 SqlConnection 개체 ("다른 상태"에 의해 다른 속성 값을 보유 할 수있는 다른 상태 일 수 있습니다. "원본"연결 개체에서)?!

c) 풀링을 사용하지 않으면 어떻게됩니까? .Net은 SqlConnection 개체를 "처음부터"다시 생성합니까? 다시 SqlConnection 개체를 닫기 전에 일부 속성 값을 변경했을 수 있습니까? 컴파일러가 SqlConnection 개체를 닫는 방법에 대한 상태를 다시 만드는 방법을 알고 있습니까?

답변

3

도록 SqlConnection 직접 처음부터 "진짜"연결이되지 않습니다 감사합니다. 연결 풀은 그 이후를 보입니다. 확실하지는 않지만 SqlConnection을 다시 열면 다른 "실제"네트워크 연결로 끝날 수 있습니다. 이 파일의 이름뿐만 아니라 내부 핸들의 트랙을 유지하는 경우, 그것은 단지 모든 가능한 고장 등으로, 그것을 다시 시도 할 수 그것은 단지 아니다 -

당신은 이 재개 허용 FileStream 쓸 수 굉장히 유용하다. (내가 개인적으로 유용한 SqlConnection을 개인적으로 다시 열 수 있다는 것을 알 수 없다고 말할 수 없다.)

"같은 SqlConnection 개체"를 얻는 것에 관해서는 - 당신은 SqlConnection 개체를 참조하면 기존 개체에서 방금 메서드를 호출하는 것입니다. 그 참조는 바뀌지 않을 것입니다 - 객체의 상태 (또는 그것이 참조하는 다른 것의 상태).

풀링을 사용할 수없는 경우 어떻게 될지 알 수 없습니다. 아주 새로운 SqlConnection 개체를 만들 수 없습니다 (또는 오히려 가능하지만 은 이미 참조가있는을 대체하지 않습니다). 나는 그것이 "다른 것"주위에 래퍼가되는 SqlConnection에 이르기까지 모두 비등하다고 생각한다 - 그리고 "그 밖의 무엇인가"는 확실히 다시 만들어 질 수 있었다.