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
,Если я обновлю страницу, она будет работать нормально.Есть ли альтернативный метод, отличный от переменной сеанса, о котором я не думаю, или лучший способ установить его для начала?