Хорошо, я хочу воссоздать проект, который я создал с помощью EF 4.1, в EF 5.0, достаточно простой или, по крайней мере, я так думал. Одна из особенностей моего старого проекта заключается в том, что я смог изменить строку подключения к базе данных во время выполнения в EF 4.1:
using (var myContext = new MyEntities(ConnectionString))
{
}
Легко, но в EF 5.0 это нужно делать по-другому:
string connectionString = "data source=LocalHost;initial catalog=MyDatabase;user id=MyUserName;password=MyPassword;multipleactiveresultsets=True;App=EntityFramework";
using (var myContext = new MyEntities())
{
myContext.Database.Connection.ConnectionString = connectionString;
}
Теперь мне потребовалось больше двух часов, чтобы понять, поэтому я думаю, мой вопрос: это правильный способ изменения строки подключения во время выполнения или нет? Если да, то почему они внесли это изменение?
Я нашел эту ссылку, но она не сработала. Я получил ошибку, как подробно описано в первом комментарии к первому ответу Ладислава Мрнки. Позже я нашел эту Link, которая кажется работать нормально.
ОБНОВИТЬ
Я перечитал первую ссылку, которую я разместил, и нашел другое решение, я просто создал частичный класс:
public partial class MyEntities : DbContext
{
public MyEntities(string connectionString) : base(connectionString)
{
Database.Connection.ConnectionString = connectionString;
}
}
Database.Connection.ConnectionString = connectionString;
избыточна, потому что эта операция уже выполнена базовым конструктором. - person Nick Udell   schedule 20.05.2016