2012-12-29 3 views
1

동일한 도메인 모델을 사용하는 여러 프로젝트가있는 솔루션이 있습니다. 그래서 내 도메인 모델을 보유한 클래스 라이브러리를 만들었습니다. 이 클래스 라이브러리에는 또한 내 프로젝트에서 사용되는 다른 매개 변수가 들어 있습니다. 그런 다음 각 프로젝트의 클래스 라이브러리에 대한 참조를 추가합니다. 내 클래스 라이브러리에는 this example에서 파생 된 일부 저장소 클래스가 있습니다.클래스 라이브러리 데이터베이스 연결 문자열

그러나 데이터베이스에 연결하는 데 문제가 있습니다. 내 데이터베이스 라이브러리에 데이터베이스에 연결할 수 있기를 바란다. 거기에 내 데이터베이스 컨텍스트 클래스를 정의 했으므로 데이터베이스 세트를 설정했다. 하나의 프로젝트로, 나는 보통 web.config 파일에 연결 문자열을 정의합니다. 그러나 클래스 라이브러리에는 web.config 파일이 없습니다. 연결 문자열을 어떻게 설정합니까? 단지 이름을 설정하려면 편집

는 OK 것, 내가

public mydbcontext() : base(ConfigurationManager.ConnectionStrings["DatabaseCon"].ConnectionString) 
    { 

    } 

나는이 권리를 이해하는 것처럼 클래스 라이브러리에 정의 된 내 데이터베이스 컨텍스트, mydbcontext의 생성자가 말 각 프로젝트의 연결 문자열은 "DatabaseCon"입니까?

+0

어셈블리는 컨텍스트에서 구성 파일을 찾을 수 있습니다. 웹 응용 프로그램에서 호출 된 어셈블리는 web.config에 액세스 할 수 있습니다. –

+0

고맙습니다. 편집을 참조하십시오. (제가 이해한다면) – jpo

+0

@jpo - 이것은 한 가지 방법이지만 데이터 액세스 라이브러리는 별도로 테스트 할 수 없습니다. – Oded

답변

0

클래스 라이브러리를 사용하는 응용 프로그램의 web.config 파일에서 연결 문자열을 정의해야합니다. 다른 방법으로 연결 문자열을 클래스 라이브러리 내부의 DbConext의 생성자에 하드 코딩 할 수 있습니다. 외부에서 수정할 수 없기 때문에 매우 나쁜 접근 방법입니다. 예를 들어 외부에서 수정할 수 없기 때문에 다른 연결 문자열을 관리하는 데 어려움이 있습니다. 다른 환경 - 준비, 생산, ...

+0

편집 – jpo

+0

을 참조하십시오. 이미 말씀 드린 바 :이 라이브러리를 사용하는 웹 응용 프로그램의 'web.config' 내에 연결 문자열을 넣었습니다. 그것이 올바른 접근법입니다. –

1

당신은 그렇지 않습니다.

연결 문자열을 필요로하는 클래스와의 종속성으로 연결 문자열에 전달하십시오.

액세스 권한을 캡슐화 할 수 있지만이 라이브러리를 사용하는 프로그램에서 인스턴스화해야합니다. 이 프로그램은 구성에 연결 문자열을 보유합니다.

+0

이것은 내가 고려하지 않은 접근 방식입니다. 예를 들어 주시겠습니까? – jpo

+0

@jpo - 예? 필요에 따라 문자열 매개 변수를 전달하기 만하면됩니다. – Oded

+0

감사합니다. 많은 의미가 있습니다. – jpo

관련 문제