2013-07-30 3 views
-2

열려있는 연결 파일을 별도로 유지하고 .cs 파일과 같이 다른 위치에서 다시 사용하고 싶습니다. 나는 다음과 같은 코드를 다시 작성하려면 해달라고 : PHP는 파일 ("opendb.php")를 포함 포함처럼C에서 연결 파일 재사용

using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["connection"].ToString())); 

는, C#에서 가능하다.

+0

당신은 이미 그것을하고 있습니다, 그렇죠? Web.config ** IS ** 별도의 파일입니다. – Abhitalks

+0

연결 풀에서 읽습니다. 표기법은 간단한 방법으로 짧아 질 수 있지만'using() {} '을 사용하는 것은 현명하지 못합니다. –

+0

예 Web.config를 사용하고 있지만 cs 파일에서 다시 연결 코드를 열지 않습니다. –

답변

11

아무 것도 포함하지 마십시오. 코드를 다른 클래스에 넣기 만하면됩니다. 예를 들어 :

는 다른 코드에서 다음
public static class ConnectionHelper 
{ 
    public static SqlConnection GetConnection() 
    { 
     return new SqlConnection(ConfigurationManager.ConnectionStrings["connection"] 
                .ToString()) 
    } 
} 

:

using (var conn = ConnectionHelper.GetConnection()) 
{ 
    ... 
} 

고려해야 할 대안 - 더 테스트 용이성을위한이 - 의존성 주입을 사용하는 것입니다. GetConnection인스턴스 메소드로 만들고 잠재적으로 ConnectionHelper을 인터페이스로 구현 한 다음 종속성 (예 : 생성자에서)으로 가져옵니다. 이상적으로 어쨌든 직접 연결해야하는 것은 거의 없습니다. 더 많은 비즈니스 중심의 작업을 노출하는 것이 좋습니다.

+0

은 sqlconnection의 경우 (정적 인 경우) 정적 인 것이 아닙니다. – Alok

+0

@ Alok : 정적 * 메소드 * - 정적 * 필드 *가 아닙니다. 괜찮아.하지만 의존성 주입은 더 깨끗해 질거야. 그것의 어떤면에서 더 많은 설명이 필요합니까? –

+0

오, 나는 클래스가 너무 정적이라고 생각했다. 게다가 우리는 인터페이스를 구현할 수있는 방법을 얻지 못했습니다. – Alok