문제

모든 데이터베이스 코드를 별도의 라이브러리로 추상화 한 다음 모든 코드에서 해당 라이브러리를 사용하려고합니다. 모든 데이터베이스 연결은 vs2005의 데이터 세트를 드래그하고 삭제하여 앱 세트의 연결 문자열을 사용하여 작성하는 유형의 태블레이터를 사용하여 수행됩니다.

내가 해결할 수 없었던 문제는 .NET이 라이브러리를 사용하는 다른 프로젝트에 적용하는 라이브러리를 전파하지 않는다는 것입니다.

요컨대, MyProgram.client 등과 같은 다른 프로젝트에서 사용하는 데이터베이스 레이어 라이브러리 MyProgram.dblayer가 있습니다. ConnectionString은 myProgram.client.exe.config에있는 모든 데이터 세트가있을 때 빌드 후 변경할 수 있습니다. myProgram.dblayer로 옮겼을 때 바이너리를 만들고 나서 그 설정은 나에게 불가능하지 않습니다.

편집 : 이것은 응용 프로그램 설정에서보다 일반적인 문제인 것 같습니다.

내가 알아 차린 것은 라이브러리에서만 사용되는 설정을 수동으로 추가하면 올바르게 읽을 것입니다. 지금 필요한 유일한 것은 설정이 .config 파일에 자동으로 포함되는 것입니다.

도움이 되었습니까?

해결책

AppSettings/ConnectionStrings는 항상 현재 실행중인 앱 풀에서 읽습니다.

이것으로 나는 다음을 의미합니다.

만약 내가 가지고 있다면 A.exe 수업이 있습니다 DAL.cs. dal.cs는 config에서 연결 문자열을 읽고 반환됩니다. "abc" 예상대로.

그런 다음 dal.cs를 자체 프로젝트로 옮기고 자체 조립으로 옮깁니다. 그러나 여전히 app.config에서 Connection String을 호출 할 수 있습니다. 실행중인 응용 프로그램에서 어셈블리를 "호스트"하고 해당 응용 프로그램 앱 구성에 연결 문자열을 추가해야합니다.. 그래서 새 app.config를 만들고 연결 문자열을 지정합니다. "xyz" 그것에서, 그것이 실행되면, 그것은 예상대로 실행됩니다.

이제 참조를 변경하면 A.exe 새로운 것을 사용하기위한 프로젝트 DAL.dll, 어떤 연결 문자열이 가질 것이라고 생각하십니까? "xyz"? 아니요! 사용합니다 "abc" Application 구성 파일에 여전히 구성되어 있기 때문에 이전과 마찬가지로 A.exe.

많은 창에서 공유 dal 코드를 사용했기 때문에 이것이 효과가 있다는 것을 알고 있습니다. 그리고 웹 응용 프로그램.

이 중 하나가 불분명하거나 문제에 도움이되지 않으면이 답변에 대해 댓글을 달아 알려주십시오.

OP의 다음 주석을 업데이트하십시오

"호스트"에 의해 공통 코드를 호출하는 응용 프로그램을 의미합니다. 이것은 Windows 또는 웹 응용 프로그램 일 수 있습니다. 기본적으로 응용 프로그램 컨텍스트입니다.

공통 코드를 사용하는 각 응용 프로그램의 구성 파일에서 항목을 작성해야합니다. 내가 당신의 원래 질문을 오해했다면 (전적으로 가능하면, 그것은 긴 하루였습니다!) 구성을 중앙 집중화하고 싶다면 다음을 필요로 할 것입니다.

  • 중앙 집중식 스토리지 (XML, DB 등) 형태를 만듭니다.
  • 중앙 집중식 저장소에 연결할 수 있도록 기본 값을 갖도록 공통 코드를 향상시킵니다.
  • 그런 다음 코드는 구성 저장소의 정보를 기반으로 자체를 구성 할 수 있습니다.

도움이 되었기를 바랍니다 :)

다른 팁

당신의 문제가 올바르게 이해되면 필요한 것 같습니다.

1.) 모든 데이터 액세스 통화에 대한 일반적인 응용 프로그램 컨텍스트

또는

2.) 구성 설정에 액세스하는 다른 방법

1 : 단일 컨텍스트 (IIS, Windows Service 등)에서 실행되는 서비스 내에서 데이터 계층을 래핑하십시오.

2 : 제공되는 구성 관리 메커니즘을 사용하지 마십시오. 대신 특정 위치에서 속성 파일을 사용하십시오.

구성 설정이 다른 레벨에서 계단식을 잊지 마십시오. 예를 들어 ... machine.config에서 설정을 추가하면 해당 컴퓨터에서 실행되는 모든 응용 프로그램이 해당 설정을 하위 레벨로 교체하지 않는 한 해당 설정을 사용합니다 ... 이는 표준화 된 설정을 설정하는 좋은 방법 일 수 있습니다. 구성 파일.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top