首页 > 解决方案 > 如何在我的 DbContext 上切换连接?

问题描述

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 变量的问题,因此在尝试使用操作之前将 DB 连接设置为之前设置的任何值CreateIncident。如果我刷新页面,它工作正常。除了我没有考虑的会话变量之外,还有其他方法,或者有更好的方法来设置它吗?

标签: c#asp.net-mvcentity-framework

解决方案


推荐阅读