如何在DbContext上切换连接?

时间:2019-02-26 21:07:10

标签: c# asp.net-mvc entity-framework

public partial class Accident_Reporting_Entities : DbContext
{
    public Accident_Reporting_Entities(string connectionString) : 
    base(getConnectionString(connectionString))
    {
    }

    public static string getConnectionString(string Facility) {
        switch (Facility) {
            case "Location1":
                return "Accident_Reporting_Entities";
            case "Location2":
                return "Accident_Reporting_2_Entities";
            case "Location3":
                return "Accident_Reporting_3_Entities";
            default:
                return "Accident_Reporting_Entities";
        }
    }
}

在上面的代码中,我已经做到了可以更改Accident_Reporting_Entities连接。我想知道在MVC 5中设置此变量的最佳实践是什么。我曾考虑过使用会话变量,但是我不确定这是设置此连接的最佳方法。

我将举例说明当前的设置方式:

public class IncidentController : Controller
{
    private Accident_Reporting_Entities DB = new Accident_Reporting_Entities(System.Web.HttpContext.Current.Session["Facility"].ToString());

    [HttpPost]
    public ActionResult CreateIncident(string Facility)
    {
        System.Web.HttpContext.Current.Session["Facility"] = Facility;

        var incident = new AccidentSupervisorViewModel();
        incident.Departments = DB.Departments.ToList().Select(i => new SelectListItem
            {
                Text = i.DepartmentName,
                Value = i.Id.ToString()
            }      
        );
        return View(incident);
    }
}

使用上面的代码,我遇到了在视图加载后设置DB DbContext变量的问题,因此将数据库连接设置为尝试使用CreateIncident操作之前先前设置的值。如果我刷新页面,效果很好。除了我不考虑的会话变量之外,还有其他替代方法,还是一种更好的设置方法?

0 个答案:

没有答案
相关问题