0

app.config (일부 경우 connectionStrings)의 일부 XML 항목을 같은 파일의 appSettings 매개 변수를 사용하여 작성할 수 있습니까? 예 :appSettings 매개 변수를 사용하여 app.config에서 connectionString을 작성합니다.

<connectionStrings> 
    <add name="MyContextDB" connectionString="Data Source =.;Initial Catalog = EFMyContextDB;Integrated Security = false;User Id=user;Password=pwd" providerName="System.Data.SqlClient" /> 
    </connectionStrings> 

    <appSettings> 
    <add key="UserId" value="userValue" /> 
    <add key="Password" value="pwdValue" /> 
    </appSettings> 

어떻게 든 MyContextDB's connectionStringpwd 값 대신 UserId 대신 userPassword을 사용하고 싶습니다.

이 연결

DbContext 목적에 사용됩니다

public class MyContext : DbContext 
{ 
    public MyContext() : base("name = MyContextDB") { } 
    ... 
} 

답변

2

당신은 확실히 SqlConnectionStringBuilder를 사용하여 볼 수 있습니다. 기존 연결 문자열을 생성자에 전달하십시오. PasswordUserID 속성을 설정하십시오. 그런 다음 ToString()으로 전화하십시오.

DbContext과 같은 연결 문자열을 전달할 수 없습니다. 공장 패턴이나 비슷한 것으로 리팩토링을 고려할 수 있습니다.

또한 구성 변환을 사용하여 빌드시 구성 파일을 실제로 업데이트하는 방법을 고려할 것입니다.

builder.ToString(); 
0

는 SqlConnectionStringBuilder를 사용?
+0

이 내가 말한되지 않습니다 : 새로운 ConnectionString을 얻을, 그리고

System.Data.SqlClient.SqlConnectionStringBuilder builder = new System.Data.SqlClient.SqlConnectionStringBuilder(System.Configuration.ConfigurationManager.ConnectionStrings["MyContextDB"].ToString()); builder.UserID = System.Configuration.ConfigurationManager.AppSettings["UserId"]; builder.Password = System.Configuration.ConfigurationManager.AppSettings["Password"]; 

: –

+0

죄송합니다. 내 댓글을 보지 못했습니다. –