2009-10-27 3 views
2

C#으로 작성된 .NET MVC 웹 응용 프로그램의 다른 데이터베이스에 연결하는 방법은 무엇입니까?MVC 웹 응용 프로그램의 여러 데이터베이스에 연결

여기서 데이터베이스 테이블의 구조는 동일합니다. 모든 변경 사항이 데이터베이스 이름입니다. 그렇다면 수동으로 데이터베이스에 연결하거나 연결 문자열을 수정하는 방법은 무엇입니까?

트릭은 동일한 코드를 사용하는 것입니다. URL에 따라 데이터를 다른 데이터베이스에서 표시하려고합니다. 뷰와 컨트롤러 (거의)에는 단일 코드 w.r.t가 있습니다. 모델.

-Datte

+1

어떻게 데이터베이스에 연결하고 있습니까? ADO.NET? LINQ to SQL? 엔티티 프레임 워크? NHibernate? 다른 것? – jrista

+0

예, Entity Framework를 사용하고 있습니다 ... – dattebayo

답변

8

여기에 당신이 요구하는지 무슨 생각을 할 수있는 매우 간단한 방법이다. 당신의 web.config 파일에서, 당신은 당신이 연결 문자열을 정의 할 수 있습니다 :

<connectionStrings> 
    <add name="DevelopmentDB" providerName="System.Data.SqlClient" 
     connectionString="Data Source=sql-dev.example.com;Initial Catalog=MyDB;User Id=MyUser;Password=MyPassword" /> 
    <add name="ProductionDB" providerName="System.Data.SqlClient" 
     connectionString="Data Source=sql-prod.example.com;Initial Catalog=MyDB;User Id=MyUser;Password=MyPassword" /> 
</connectionStrings> 

그런 다음 (기본) 컨트롤러, 당신은 같은 요청에 따라 적절한 연결 문자열을 반환하는 방법을 만들 수 있습니다 :

internal string ConnectionString 
{ 
    get 
    { 
     return getConnectionStringByServerName(this.HttpContext.Request.ServerVariables["SERVER_NAME"]); 
    } 
} 

internal string getConnectionStringByServerName(string serverName) 
{ 
    if (serverName.Equals("localhost")) 
    { 
     return WebConfigurationManager.ConnectionStrings["DevelopmentDB"].ConnectionString; 
    } 
    else 
    { 
     return WebConfigurationManager.ConnectionStrings["ProductionDB"].ConnectionString; 
    } 
} 

무엇보다 가장 중요한 선택 기준을 변경할 수 있습니다.

행운을 빈다.

관련 문제