EF 5 Changing Connection String at Runtime

只愿长相守 提交于 2019-11-26 19:57:47

问题


Ok, I want to recreate a project that I created using EF 4.1 to EF 5.0, simple enough or at least I thought. One of the things in my old project is that I was able to change the database connection string at runtime in EF 4.1:

using (var myContext = new MyEntities(ConnectionString))
{

}

Easy-peasy but in EF 5.0 you have to do this differently:

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;
}

Now, this took me a better part of two hours to figure out, so I guess my question is this the proper way of changing the connection string at runtime or not? If it is why did they make this change?

I did find this Link but it didn't work. I received the error as detailed in the first comment of the first answer by Ladislav Mrnka. I later found this Link which seems to work fine.

UPDATE

I re-read the first link I posted and I found another solution, I simply created a partial class:

public partial class MyEntities : DbContext
{
    public MyEntities(string connectionString) : base(connectionString) 
    {
          Database.Connection.ConnectionString = connectionString; 
    }
}

回答1:


Use the context constructor overload that take the connection string as a parameter.




回答2:


Have a look at other link Setup Entity Framework For Dynamic Connection String. It says - " you can do it by creating another partial class as the Entities class is declared partial"



来源:https://stackoverflow.com/questions/12737289/ef-5-changing-connection-string-at-runtime

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!