2009-03-10 2 views
1

web.config에 응용 프로그램 설정을 저장하기 위해 사용자 지정 구성 클래스를 사용하는 웹 프로젝트가 있습니다. 서버 이름을 기반으로 web.config의 구성 설정을 저장하고 액세스 할 수 있도록이 작업을 수행합니다. 이 방법으로 프로젝트가 개발에서 준비, 생산 단계로 넘어갈 때 연결 문자열 및 서버마다 다를 수있는 기타 설정과 같은 web.config 설정을 변경하는 것을 기억할 필요가 없습니다. 클래스는 배포 된 서버를 기반으로 web.config에서 올바른 구성 설정을 검색합니다.Linq dbml 클래스와 함께 web.config에 대한 사용자 지정 구성 클래스를 사용하는 방법

이것은 잘 작동합니다. 그러나 이제는 생성 된 dbml 클래스를 사용하여 Linq를 사용하도록 프로젝트를 변환했습니다. 이것은 훌륭하지만, 생성 된 클래스는 web.config의 간단한 연결 문자열을 사용해야한다고 주장합니다. 이러한 클래스는 자동으로 생성되므로 사용자 정의 구성 클래스를 사용하도록 코드를 간단히 변경할 수는 없습니다. 누군가가 생성 된 클래스가 적절한 사용자 정의 객체를 호출하여 적절한 연결 문자열을 검색하도록하는 방법을 설명 할 수 있습니까?

감사합니다.

답변

1

명시 적으로 DataContext 생성자에 연결 문자열을 제공하는 것이 좋습니다. 그렇게하면 앱이 webconfig 도우미를 통해 올바른 연결 문자열을 가져올 수 있으며 datacontext에 항상 올바른 연결 문자열이 제공 될 수 있습니다. Context를 사용하여 webconfig에서 적합한 컨텍스트를 선택하십시오.

+0

가장 직접적인 방법입니다. 컨텍스트 개체가 연결 문자열을 매개 변수로 받아 들일 수 있어야합니다. 감사! – user69889

+0

아무런 문제가 없기 때문에 행운을 빈다. –

0

대답이 없지만 중앙 구성 서비스를 구현하는 Microsoft의 StockTrader 예제 애플리케이션을 살펴보고 Linq를 사용한다고 생각할 수도 있습니다. 나는 오랫동안 그것을 보지 않았지만 당신이 찾고있는 통찰력을 제공 할 수 있습니다.

미안하지만 나는 직접적인 대답이 없습니다.

1

대안 :

해당 섹션에 대한 데이터를 유지하는 XML 파일의 이름을 지정하는 configSource 속성을 취할 수있는 web.config 파일의 <connectionStrings> 요소입니다. (가) 각 PC의 환경에 고유 한 정보와 별개의 connections.config을 넣어

<connectionStrings configSource="connections.config" /> 

: 나는로 설정합니다. 이미 대답을 얻었다처럼

0

보인다,하지만 난이를 제공 거라고 생각 :

public MyDataContext() : 
     base(global::System.Configuration.ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString, mappingSource) 
{ 
    OnCreated(); 
} 

당신은 수동으로 부분 클래스 파일 당신의 .designer.cs을 수정하고 자신과 그 기본 컨텍스트 생성자를 오버라이드 (override) 할 수 .

0

DataContext 클래스의 생성자에 연결 문자열을 매개 변수로 전달하기 만하면됩니다.

그런 경우에는 구성에서 이전에 사용했던 방식으로 연결 문자열을 검색하고 DataContext를 만들 때 넘겨 주면됩니다.

관련 문제