Есть ли способ изменить строку подключения в базе данных в первую очередь?
У меня есть несколько баз данных, схемы их одинаковы. Когда я использую базу данных в первую очередь, строка подключения указывается при создании файла edmx. Я хочу знать, есть ли способ изменить строку подключения? Это так, поэтому я могу выбрать, какая база данных будет работать. Спасибо заранее!
3 ответа
Измените строку подключения в файле web.config.
<connectionStrings>
<add name="SandBoxEntities" connectionString="metadata=r... />
</connectionStrings>
Я сократил фактическую строку подключения, потому что это не важно - просто хотел дать вам представление о том, что искать в файле web.config.
Вы также можете изменить строки подключения программно. Проверьте Пример 16.2. Программная модификация EntityConnectionString.
Мы не храним строки подключения в нашем файле web.configs, поэтому принятое решение не будет работать для нас. Если вы просто попытаетесь предоставить строку подключения через базовый конструктор DbContext, вы получите следующее исключение:
Код, сгенерированный с использованием шаблонов T4 для разработки Database First и Model First, может работать некорректно, если используется в режиме Code First. Для продолжения использования Database First или Model First убедитесь, что строка подключения Entity Framework указана в файле конфигурации исполняемого приложения. Чтобы использовать эти классы, которые были сгенерированы из Database First или Model First, с Code First добавьте любую дополнительную конфигурацию, используя атрибуты или API DbModelBuilder, а затем удалите код, который выдает это исключение.
Чтобы решить эту проблему, создайте частичный класс вашего контекста следующим образом и отформатируйте строку подключения с дополнительными метаданными EF (где MyContext - это ваш контекст название модели (например, ваша модель называется MyModel.edmx, чем MyContext
в приведенном ниже коде заменяется MyModel
со всеми тремя расширениями.csdl, .ssdl, .msl)):
public partial class MyContext
{
public MyContext(string connStr)
: base(string.Format(@"metadata=res://*/MyContext.csdl|res://*/MyContext.ssdl|res://*/MyContext.msl;provider=System.Data.SqlClient;provider connection string='{0}'", connStr))
{
}
}
Вы можете определить несколько строк подключения в web.config, а затем использовать их в своем коде, возможно, в своей работе. например:
<connectionStrings>
<add name="conStr1" connectionString="metadata=r... />
</connectionStrings>`
<connectionStrings>
<add name="conStr2" connectionString="metadata=r... />
</connectionStrings>`
и так далее
и ваш конструктор класса контекста получает имя строки подключения в качестве параметра:
public MyContext(string connStr)
: base(connStr) { }
Хорошо. Теперь вы можете использовать в своем коде, как показано ниже:
using (var db = new MyContext("name=conStr1"))
{
//your code here
}
а потом
using (var db = new MyContext("name=conStr2"))
{
//your code here
}