2010-02-02 1 views
8

배경 :
데이터베이스에 대한 쿼리를 처리하는 중간 계층 논리에서 내 인터페이스 논리를 훌륭하게 구분 한 응용 프로그램이 있습니다. 많은 SqlDataSources를 사용하지 않고 대신 SqlCommands를 사용하여 많은 저장 프로 시저를 호출하기 때문에 사용자 지정 정렬 및 압축 작업을 많이합니다.얼마나 많은 SqlConnection 인스턴스를 사용해야합니까?

양식 인증을 사용하여 보호 된 하위 디렉터리를 만듭니다. 보호 된 디렉토리의 web.config 파일에는 더 높은 권한의 역할을 가진 사용자에게 연결되는 연결 문자열이 더 있습니다.

질문 : 반복적 인 코드를 제거하기 위해 중간 계층에서 SqlConnection 개체를 공유해야합니까? 아니면 각 작업에 대해 새 인스턴스를 만들어야합니까? 공유 SqlConnection 보호 된 저장 프로 시저에 액세스하기 위해 연결 문자열을 변경해야하는 경우 다시 인스턴스화 할 수 있습니다. 여기에 모범 사례가 있습니까?

답변

10

리소스를 절약하기 위해 공유에 대해 걱정할 필요가 없습니다. .NET은 이것을 당신을 위해 관리 할 것이고, 기본적으로 연결 풀링을합니다. 명확하고 이해하기 쉬운 코드를 작성하고 .NET에서 이러한 세부 사항을 처리하게하십시오.

8

당신이 사용하는 문을 통해, 같은 곧 가능한 살았 필요한만큼 SqlConnections 만들기 :

using (var connection = new SqlConnection(...)) { 
    connection.Open(); 
    ... 
} 

는 SQL 연결이 자동으로 경합을 관리하는 연결 풀에서 가져옵니다.

참조 : http://msdn.microsoft.com/en-us/library/8xx3tyca(VS.80).aspx

+2

+1 "using"문법은 명확하게 (나는 파일/스트림 접근에도 사용될 수 있다고 생각한다)가는 길이다. –

+2

물론, 모든 일회용 리소스 (IDisposable을 구현하는 클래스) –