如何更改连接字符串或为EF模型传递自定义连接字符串

时间:2014-04-10 15:43:40

标签: c# entity-framework

我有三个数据库环境,开发人员,测试和生产。为了使用示例数据设置数据库,我创建了一个控制台应用程序,用户可以选择环境来设置数我首先使用Entity Framework数据库,但坚持如何在运行时选择实例。只有一种数据库模型可以在运行时更改数据库连接吗?

我使用了以下代码,它会抛出异常。

        // Truncate all Data
        if (env.Key == ConsoleKey.D)
        {
            db.Database.Connection.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["db_dev"].ToString();
        }

模型实体没有构造函数来获取连接字符串..

2 个答案:

答案 0 :(得分:2)

确保DbContext类上有一个构造函数,它接受一个连接字符串,然后将其传递给基类(Entity Framework将完成其余的工作)

public MyDbContext : DbContext
{
    public MyDbContext(string connectionString) : base (connectionString)
    {
    } 
}

然后,当您实例化Context时,只需传入您想要使用的连接字符串...使用上面代码的示例将是...

var connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["db_dev"].ToString();
using (var context = new MyDbContext(connectionString))
{
}

答案 1 :(得分:0)

当您创建数据库上下文实例(db变量)时,应该有一个接受字符串的构造函数重载。这就是您可以使用自定义连接字符串进行设置的方法。

如果你继承自DbContext的类没有那个重载,那就创建它,因为基类确实有它。