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
操作之前先前设置的值。如果我刷新页面,效果很好。除了我不考虑的会话变量之外,还有其他替代方法,还是一种更好的设置方法?