Подтвердить что ты не робот

Entity Framework для нескольких баз данных (такая же схема) во время выполнения?

Прежде всего, позвольте мне сказать, что я очень новичок в EF. С учетом сказанного здесь моя дилемма:

Будет перенесено приложение ASP.NET в ASP.NET MVC. Я хотел бы использовать EF для этого. Существует одна основная база данных, в которой хранится информация о клиенте. Кроме того, каждый "клиент" имеет свою собственную базу данных. Это ограничения, которые мы имеем.

В настоящее время клиентская информация в основной БД, которая позволяет мне строить строку соединения для каждого клиента и делать индивидуальные вызовы SQL.

Как я мог бы сделать то же самое в Entity Framework? Каждая база данных будет иметь одну и ту же схему. Есть ли способ программно переключить строку соединения? Эти БД в настоящее время находятся на одном сервере, но это не требование, и это может быть совершенно другой сервер.

Любые идеи?

Несколько строк подключения в Web.config были бы последним средством. Даже тогда я не уверен, как именно подключить это.

Спасибо заранее.

4b9b3361

Ответ 1

Если вы работаете через EntityConnection в конструкторе объекта объектов, вы можете легко с легкостью изменить базу данных.

EntityConnection con = new EntityConnection(connString);
con.ChangeDatabase(dbName);
using (Entities context = new Entities(con))
{
    // Some code here
}

Ответ 2

Когда вы создаете контекст данных, здесь, как программно изменить строку подключения во время выполнения, изменив свойство Context.Connection:

//Get the connection string from app.config and assign it to sqlconnection string builder
SqlConnectionStringBuilder sb = new SqlConnectionStringBuilder(((EntityConnection)context.Connection).StoreConnection.ConnectionString);
sb.IntegratedSecurity = false;
sb.UserID ="User1";
sb.Password = "Password1";

//set the object context connection string back from string builder. This will assign modified connection string.
((EntityConnection)context.Connection).StoreConnection.ConnectionString = sb.ConnectionString; 

Взято из: http://sivapinnaka.spaces.live.com/blog/cns!B027EF7E7070AD69!211.entry

Ответ 3

Если количество ваших клиентов ограничено и строки подключения почти никогда не меняются, элегантным способом может быть использование ConfigurationManager.ConnectionStrings для восстановления требуемой строки соединения.

Как

string connectionString = ConfigurationManager.ConnectionStrings["Miller"].ConnectionString;
return new Entities(connectionString);

См. также http://msdn.microsoft.com/en-us/library/ms254494.aspx