EF 5在运行时更改连接字符串

时间:2012-10-04 23:07:10

标签: entity-framework entity-framework-4.1 connection-string entity-framework-5

好的,我想重新创建一个我使用EF 4.1到EF 5.0创建的项目,这个项目很简单,或者至少我认为。我的旧项目中的一件事是我能够在运行时在EF 4.1中更改数据库连接字符串:

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

}

Easy-peasy但在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,但它没有用。我收到了Ladislav Mrnka在第一个回答的第一条评论中详述的错误。我后来发现这个Link似乎工作正常。

更新

我重新阅读了我发布的first link,我发现了另一个解决方案,我只是创建了一个部分类:

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

2 个答案:

答案 0 :(得分:6)

使用将连接字符串作为参数的上下文构造函数重载。

答案 1 :(得分:0)

查看其他链接Setup Entity Framework For Dynamic Connection String。 它说 - "您可以通过创建另一个分部类来实现它,因为实体类被声明为部分"