我有三个数据库环境,开发人员,测试和生产。为了使用示例数据设置数据库,我创建了一个控制台应用程序,用户可以选择环境来设置数我首先使用Entity Framework数据库,但坚持如何在运行时选择实例。只有一种数据库模型可以在运行时更改数据库连接吗?
我使用了以下代码,它会抛出异常。
// Truncate all Data
if (env.Key == ConsoleKey.D)
{
db.Database.Connection.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["db_dev"].ToString();
}
模型实体没有构造函数来获取连接字符串..
答案 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的类没有那个重载,那就创建它,因为基类确实有它。