0

Entity Framework에 연결해야하지만 처음에는 연결 문자열을 알 수 없습니다 - 런타임에만.C#의 코드로 동적 인 방법으로 Entity Framework에 연결하는 방법은 무엇입니까?

ASP.NET MVC에서 연결 문자열을 사용하여 Entity Framwork에 어떻게 연결할 수 있는지 알고 싶습니다.

는이 코드 샘플 발견

public class TestEntities : DbContext 
{ 
    public TestEntities() : base(GetSqlConnection(), true) 
    { 
    } 

    public static DbConnection GetSqlConnection() 
    { 
     // Initialize the EntityConnectionStringBuilder. 
     EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder(); 

     var connectionSettings = ConfigurationManager.ConnectionStrings("Current_ADO_Connection_In_Config"); 

     // Set the provider name. 
     entityBuilder.Provider = connectionSettings.ProviderName; 

     // Set the provider-specific connection string. 
     entityBuilder.ProviderConnectionString = connectionSettings.ConnectionString; 

     // Set the Metadata location. 
     entityBuilder.Metadata = "res://*/Models.TestModel.csdl|res://*/Models.TestModel.ssdl|res://*/Models.TestModel.msl"; 

     return new EntityConnection(entityBuilder.ToString()); 
    } 
} 

을하지만 난 ConnectionStrings이 방법이 아니라고 오류가 발생합니다.

누군가가 도와 줄 수 있습니까?

+0

ConfigurationManager.ConnectionStrings이 방법이 아닙니다, 그것은 속성입니다. 다음과 같이 사용자 문자열에 액세스 할 수 있습니다. ConfigurationManager.ConnectionStrings [ "Current_ADO_Connection_In_Config"]. ConnectionString; https://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.connectionstrings%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396 – jpgrassi

+0

다음 코드를 발견했습니다 : Expo_DevEntities9 db = 새로운 Expo_DevEntities9(); db.Database.Connection.ConnectionString = "서버 = localhost, 1433; 데이터베이스 = Expo_Dev; 사용자 ID = dev; 암호 = dev1234!"; 하지만 오류가 발생합니다 : 내부 예외 2 : – Rachel

답변

0

DbContext의 기본 생성자는 App.Config에서 연결 문자열을 가져 오려고합니다. 다른 constructors of DbContext 중 하나는 ConnectionString을 전달할 수있게합니다. 필자는 종종 단위 테스트 데이터베이스를 참조하기 위해 해당 생성자를 사용합니다.

연결 문자열이 DbContext 공장에서 사용되는, 즉 연결하는 데 사용되는 데이터베이스 나를 위해 숨 깁니다

+0

OP는 '메타 데이터'를 사용하고 있으므로 사용자의 방법은 작동하지 않습니다. – JohnyL