Я хочу передать динамическую строку соединения в контекст инфраструктуры сущности. У меня более 150 схем, которые идентичны (по одному на одну учетную запись), и я хотел бы выбрать соединение как таковое:
ApplicationDbContext db = new ApplicationDbContext("dbName");
В теории это было бы довольно легко, так как я могу создать connectionString и передать его как аргумент для конструктора, например:
public ApplicationDbContext(string dbName) : base(GetConnectionString(dbName))
{
}
public static string GetConnectionString(string dbName)
{
// The connectionString passed is something like:
// Server=localhost;Database={0};Uid=username;Pwd=password
var connString = ConfigurationManager
.ConnectionStrings["MyDatabase"]
.ConnectionString
.ToString();
return String.Format(connString, dbName);
}
Я могу подключиться успешно, когда просто передаю имя строки подключения, но не тогда, когда я генерирую его динамически, как показано ниже. Теперь я понимаю, что это потому, что строка соединения в web.config имеет в ней атрибут providerName="MySql.Data.MySqlClient"
.
Когда я передаю фактическую строку подключения динамически к соединению, он предполагает, что ему необходимо подключиться к SQL Server, а не к MySQL, и не удается из-за неправильной строки подключения.
Вопрос в том, как передать имя поставщика в строку соединения, если я создаю его динамически?