C# 使用 appSettings 参数在 app.config 中编写 connectionString
C# compose connectionString in app.config using appSettings parameters
是否可以使用同一文件中的 appSettings
参数在 app.config
中编写一些 xml 条目(在我的例子中是一些 connectionStrings
)?
示例:
<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>
我想以某种方式使用 UserId
而不是 user
和 Password
而不是 pwd
MyContextDB's connectionString
的值。
然后在 DbContext
对象中使用此连接:
public class MyContext : DbContext
{
public MyContext() : base("name = MyContextDB") { }
...
}
你当然可以看看使用SqlConnectionStringBuilder
。将现有的连接字符串传递给构造函数。设置 Password
和 UserID
属性。然后调用 ToString()
.
您将无法为您的 DbContext
传递连接字符串。您可以考虑将其重构为工厂模式或类似的东西。
我还会考虑使用配置转换在构建时实际更新配置文件。
使用 SqlConnectionStringBuilder:
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"];
然后,获取新的连接字符串:
builder.ToString();
是否可以使用同一文件中的 appSettings
参数在 app.config
中编写一些 xml 条目(在我的例子中是一些 connectionStrings
)?
示例:
<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>
我想以某种方式使用 UserId
而不是 user
和 Password
而不是 pwd
MyContextDB's connectionString
的值。
然后在 DbContext
对象中使用此连接:
public class MyContext : DbContext
{
public MyContext() : base("name = MyContextDB") { }
...
}
你当然可以看看使用SqlConnectionStringBuilder
。将现有的连接字符串传递给构造函数。设置 Password
和 UserID
属性。然后调用 ToString()
.
您将无法为您的 DbContext
传递连接字符串。您可以考虑将其重构为工厂模式或类似的东西。
我还会考虑使用配置转换在构建时实际更新配置文件。
使用 SqlConnectionStringBuilder:
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"];
然后,获取新的连接字符串:
builder.ToString();