C# compose connectionString в app.config с использованием параметров appSettings
Можно ли составить какую-то запись XML в app.config
(в моем случае некоторые из connectionStrings
) с помощью appSettings
параметры из одного файла? Пример:
<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") { }
...
}
2 ответа
Вы, конечно, можете посмотреть на использование SqlConnectionStringBuilder
, Передайте существующую строку подключения в конструктор. Установить Password
и UserID
свойства. Тогда позвони ToString()
,
Вы не сможете передать такую строку подключения для вашего DbContext
, Вы могли бы рассмотреть возможность рефакторинга, чтобы заводской шаблон или что-то подобное
Я также хотел бы рассмотреть возможность использования config config для фактического обновления файлов конфигурации во время сборки.
Используйте 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();