EF 5 Изменение строки подключения во время выполнения

Хорошо, я хочу воссоздать проект, который я создал с помощью 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; 
    }
}

person Mark Kram    schedule 04.10.2012    source источник
comment
Вы должны написать свое редактирование как ответ и принять его...   -  person SRKX    schedule 20.02.2013
comment
В вашем ответе строка Database.Connection.ConnectionString = connectionString; избыточна, потому что эта операция уже выполнена базовым конструктором.   -  person Nick Udell    schedule 20.05.2016


Ответы (2)


Используйте перегрузку конструктора контекста, которая принимает строку подключения в качестве параметра.

person marianosz    schedule 12.03.2013

Посмотрите другую ссылку Настройка Entity Framework для строки динамического подключения. В нем говорится: «вы можете сделать это, создав еще один частичный класс, поскольку класс Entities объявлен частичным».

person Faiyaz    schedule 18.03.2016