繁体   English   中英

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

[英]How to change connection string or pass custom connection string for EF Model

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

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

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

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

确保你的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))
{
}

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM