使用多个上下文/连接字符串在运行时更改数据库连接

时间:2018-06-28 10:06:33

标签: asp.net-mvc-5 entity-framework-6 database-connection connection-string

我首先使用ef6-database构建了一个应用程序,以从3个不同的服务器位置查看相同的数据库,并可以在应用程序通过简单的下拉列表运行时在它们之间进行切换。

根据我到目前为止所读的内容,我应该能够使用3个连接字符串,其中一个为默认值,然后根据用户选择选择正确的字符串。

问题: 当应用程序已经在运行时,我们如何推送新的连接字符串/重新加载?

Web.Config

 <add name="MasterDev" connectionString="removed for security" />
 <add name="MasterUAT" connectionString="removed for security" />
 <add name="MasterLive" connectionString="removed for security" />

控制器-主页

private MasterDev db = new MasterDev("MasterDev");

型号

public partial class MasterDev : DbContext
{
    public MasterDev(string nameOrConnectionString)
        : base(nameOrConnectionString)
    {
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        throw new UnintentionalCodeFirstException();
    }

    public virtual DbSet<application> applications { get; set; }
}

控制器-设置

    public ActionResult Index()
    {
        switch (Request.Form["ddltest"])
        {
            case "ConString1":
               // Set some variable to connection string 1
                break;

            case "Constring2":
               // Set some variable to connection string 2
                break;

            default:                   
               // Set some variable to default connection string
                break;
        }

        return View();
    }

查看-设置页面

  @Html.DropDownList("ddltest", new List<SelectListItem>
  {
         new SelectListItem{ Text="Connection String 1", Value = "1" },
         new SelectListItem{ Text="Connection String 2", Value = "2" },
         new SelectListItem{ Text="Connection String 3", Value = "3" }
  }, new { @onchange = @"form.submit();",  @class = "form-control" })

0 个答案:

没有答案