Есть ли способ, чтобы изменить строку подключения в базе данных?
У меня есть несколько баз данных, схемы их одинаковы. Когда я использую database-first, строка подключения указывается при создании файла edmx. Я хочу знать, есть ли способ изменить строку подключения? Это, чтобы я мог выбрать, с какой базой данных работать. Заранее спасибо!
3 ответов
изменить строку подключения в web.конфигурационный файл.
<connectionStrings>
<add name="SandBoxEntities" connectionString="metadata=r... />
</connectionStrings>
я сократил фактическую строку подключения, потому что это не важно, просто хотел дать вам представление о том, что искать в интернете.конфигурационный файл.
вы также можете изменить строки подключения программно. Проверьте пример 16.2. Программное изменение EntityConnectionString.
мы не храним строки подключения в нашем интернете.configs, поэтому принятое решение не будет работать для нас. Если вы просто попытаетесь предоставить строку подключения через базовый конструктор DbContext, вы получите следующее исключение:
код, созданный с использованием шаблонов T4 для первой разработки базы данных и первой модели, может работать неправильно,если он используется в режиме Code First. Для продолжения использования базы данных или модели сначала убедитесь, что соединение Entity Framework строка указывается в конфигурационном файле исполняемого приложения. Чтобы использовать эти классы, созданные сначала из базы данных или модели, с кодом Сначала добавьте любую дополнительную конфигурацию, используя атрибуты или API DbModelBuilder, а затем удалите код, который создает это исключение.
чтобы решить эту проблему, создайте частичный класс вашего контекста следующим образом и отформатируйте строку подключения с дополнительными метаданными EF (где MyContext-ваш контекст имя модели (например, ваше имя модели-MyModel.edmx, чем MyContext
в коде ниже заменены MyModel
со всеми тремя расширениями .язык CSDL. ,длвэ .МСЛ используется)):
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) { }
Ok. теперь вы можете использовать в коде, как показано ниже:
using (var db = new MyContext("name=conStr1"))
{
//your code here
}
а то
using (var db = new MyContext("name=conStr2"))
{
//your code here
}