지금은 로컬을 개발하고 배포 할 것이므로 지금 검토하고 있습니다. 구름에. 따라서 데이터 컨텍스트에서 사용중인 연결 문자열을 동적으로 전환하려고합니다.
public partial class MyApplicationDbContext : DbContext
{
public MyApplicationDbContext()
: base("name=cloud")
{
Database.Connection.ConnectionString =
ConnectionStringHelpers.GetHostBasedConnectionString();
}
// abbreviated..
}
대체 :
public partial class MyApplicationDbContext : DbContext
{
public MyApplicationDbContext()
: base(ConnectionStringHelpers.GetHostBasedConnectionString())
{
}
// abbreviated..
}
도우미 :
내 계획의 Web.config의 섹션 표준 "connectionStrings"에서 필요한 연결 문자열을 구성한 다음처럼 DbContext의 생성자에서 논리를 배치하는 것입니다
<connectionStrings>
<add name="local" connectionString="..." providerName="System.Data.SqlClient" />
<add name="cloud" connectionString="..." providerName="System.Data.SqlClient" />
</connectionStrings>
,369 :
public class ConnectionStringHelpers
{
public static string GetHostBasedConnectionString()
{
return GetConnectionStringByName(GetHostBasedConnectiongStringName());
}
public static string GetHostBasedConnectiongStringName()
{
switch (System.Net.Dns.GetHostName())
{
case "myHostname": return "local"; // My local connection
case "ip-ABCD123": return "cloud"; // Cloud PaaS connection
default: return "cloud";
}
}
public static string GetConnectionStringByName(string name)
{
return ConfigurationManager.ConnectionStrings[name].ConnectionString;
}
}
그리고 내 Web.config 파일에
응용 프로그램에서 모든 연결 문자열을 하드 코딩해야하거나 응용 프로그램을 처음 실행하기 전에 실행할 구성 섹션이 있어야한다는 의미입니까? –
web.config에 연결 문자열이 여러 개있는 것이 좋습니다. 작동하는 모든 것에 만족합니다. – Pete