EF 5 Changing Connection String at Runtime

17,392

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

Share:
17,392
Mark Kram
Author by

Mark Kram

Child of God, Husband, Father and Coder in that order.

Updated on July 14, 2022

Comments

  • Mark Kram
    Mark Kram almost 2 years

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