2009-05-06 3 views
2

동적 컨텍스트를 만드는 방법을 알아 내려고하고 있는데, 그 의미는 테스트 용과 프로덕션 용이라는 두 개의 데이터베이스가 있다는 것입니다. 내 웹 사이트가 호스팅되는 위치에 따라 내 컨텍스트에서 둘 중 하나를 가리 키기를 원합니다. 그래서, 내 Web.config의에서 내가 가진 :동적 LINQ 컨텍스트

<add name="Testing_ChannelsEntities" connectionString="removed for brevity" providerName="System.Data.EntityClient" /> 
<add name="Production_ChannelsEntities" connectionString="removed for brevity" providerName="System.Data.EntityClient" /> 

내가이 예를 들어 ConnectionString을 제거한다는 사실에 걸려 업을하지 마십시오. web.config에는 테스트 및 프로덕션 연결이 있습니다.

그래서, 여기에 내가 테스트를 ConnectionString에 대한 컨텍스트를 만들 기대 내 코드 숨김입니다 :

using (ChannelsEntities chEntity = new ChannelsEntities("Testing_ChannelsEntities")) { 
    // removed the business logic because it's not relevant at all 
} 

실행이 사용하는 문에 도달하면, 나는 다음과 같은 오류 얻을 :의

형식 초기화 문자열이 인덱스 0에서 시작하는 사양을 준수하지 않습니다.

여기에 무엇이 누락 되었습니까? 이것은하기 쉽습니다.

답변

0

. 이것을 시도하십시오 -

using (ChannelsEntities chEntity = new ChannelsEntities("name=Testing_ChannelsEntities")) {} 
+0

놀랍게도이 방법이 효과적입니다. 나는 전체 "name ="때문에 그것을 기대하지 않았지만 생성자는 어떻게 든 그것을 처리해야합니다. – Jagd

0

시도 : 나는 유사했던

using (ChannelsEntities chEntity = new ChannelsEntities(WebConfigurationManager.ConnectionStrings["Testing_ChannelsEntities"].ConnectionString)) { 
    // removed the business logic because it's not relevant at all 
} 
+0

불행히도 WebConfigurationManager 라이브러리는 System.Web에 포함되어 있으며이 부분은 비즈니스 라이브러리 (클래스 라이브러리)로 추상화되어 있습니다. 물론이 라이브러리는 System.Web 라이브러리를 참조하지 않습니다. 그렇게 할 수는 있지만 그럴 필요가 없다면 그 길을 걷고 싶지는 않습니다. 또한 ConnectionStrings는 메서드가 아닌 속성이기 때문에 정확한 구문이 트릭을 처리 할 수 ​​있을지 잘 모르겠습니다. – Jagd

+0

나는 이것에 관해서 약간의 테스트를했고, 그것이 효과가 있다는 것을 알았지 만, 나는 그것을 약간 조정해야만했다. 내 비즈니스 계층의 System.Web.Configurations 라이브러리에 대한 참조를 추가해야하고 열거 형 속성으로 사용되는 ConnectionString을 수정해야했습니다. 이제 코드를 편집하여 코드가 편집 된 것을 볼 수 있습니다. – Jagd

+0

나는 주로 vb.net에서 프로그램을 작성하므로 대괄호 대신 괄호를 사용한다. 다행 이군. –

0

루트 web.config에 연결 문자열을 넣습니다. 가상 디렉터리에서 이름을 기준으로 연결 문자열을 참조 할 수 있으며 루트 web.config의 설정을 상속합니다.