【问题标题】:EF 5 Changing Connection String at RuntimeEF 5 在运行时更改连接字符串
【发布时间】:2012-10-04 23:07:09
【问题描述】:

好的,我想重新创建一个使用 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,但它没有用。我收到了 Ladislav Mrnka 的第一个答案的第一条评论中详细说明的错误。后来我发现这个Link 似乎工作正常。

更新

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

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

【问题讨论】:

  • 您应该将您的编辑写为答案并接受它...
  • 在您的回答中,Database.Connection.ConnectionString = connectionString; 行是多余的,因为该操作已由基本构造函数完成。

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    查看其他链接Setup Entity Framework For Dynamic Connection String。 它说 - “你可以通过创建另一个部分类来做到这一点,因为实体类被声明为部分”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-17
      • 2013-06-04
      • 2019-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-30
      相关资源
      最近更新 更多