0

계층 응용 프로그램과 n 계층 응용 프로그램 :연결 문자열 및 전역 변수와 같은 4 층에 DLL을

Presentation layer (MVC4) 
Business layer (C# library project) 
Data Access layer (c# library project) 
Model layer (c# library project that contains models, EF dbcontext, etc) 

그래서이 응용 프로그램에, 모델 층은 EF의 DB 컨텍스트, 일부 사용자 지정 모델 및 기타 물건 등을 함유 그것은 데이터 액세스 레이어에 쿼리를 포함하고 일부 직접 쿼리는 db로, 비즈니스 레이어에는 비즈니스 로직이 포함되어 있으며 프리젠 테이션은 mvc4 프로젝트입니다.

비즈니스, 데이터 및 모델 레이어는 라이브러리 프로젝트입니다.

mvc4 presentation layer has references to BL and ML. 
BL has references to DAL and ML. 
DAL has references to ML. 

그래서 질문 : 문자열 연결과 전역 변수는 어디에 보관해야합니까? 그리고 가장 중요한 방법은 무엇입니까?

muvv4 응용 프로그램의 web.conf에 보관해야합니까? 그렇다면 ML이 어떻게 액세스 할 수 있습니까?

또는 ML에 있어야합니까?

+0

연결 문자열은 MVC 프로젝트에 있어야합니다. DbContext에 연결 이름을 지정할 때 이름으로 사용하십시오. –

답변

2

예, 연결 문자열은 MVC4 응용 프로그램의 web.config에 있습니다. 모델 계층에서는 'System.Configuration.ConfigurationManger'개체를 사용하여 응용 프로그램의 구성에서 명명 된 연결 문자열을 검색합니다.

참조 문자열에서 액세스 할 때 연결 문자열 및 기타 구성 항목은 DLL을 실행하는 응용 프로그램의 구성에서 가져옵니다. 이렇게하면 사용하는 방법에 따라 DLL 구성 요소에 대해 다른 구성을 가질 수 있습니다.

예를 들어 일반적으로 MVC4 앱의 web.config에는 실제 데이터베이스를 가리키는 연결 문자열이 하나 있습니다. 하지만 모델 DLL에 대한 테스트를 작성하려면 테스트 프로젝트의 app.config 파일에 테스트 데이터 세트를 가리키는 다른 연결 문자열을 지정할 수 있습니다. 두 연결 문자열이 같은 이름을 가진 한 Model.DLL은 어디서 왔는지 상관하거나 신경 쓸 필요가 없습니다.

2

연결 문자열은 MVC4 응용 프로그램의 Web.Config에 있어야합니다.

ML에는 내가 가정 한 DbContext 구현이 있습니다. 해당 구현에 다음 생성자를 추가하기 만하면됩니다.

public DatabaseContext() : base("ConnectionstringName") { } 

Web.config에서 해당 연결 문자열이 추가되었는지 확인하십시오.

<connectionStrings> 
<add name="ConnectionstringName" .... /> 
</connectionstring> 
2

MVC 애플리케이션은 앱의 총체적인 루트입니다. 따라서 모든 서비스/객체는 MVC로 작성되어야합니다. web.config에 연결 문자열을 유지하는 것이 논리적이며, dev 문자열을 web.config 변환으로 생산 문자열로 대체하는 방법과 함께 거기에 보관할 수있는 좋은 방법이 있습니다.