MVC 5-如何使用会话变量设置DbContext连接字符串?

时间:2019-02-18 21:09:31

标签: c# asp.net-mvc

我的DbContext类:

public Accident_Reporting_LAX_2019_Entities(string connectionString) : base(connectionString)
{
}

在我的控制器中,我想我可以使用会话变量设置连接字符串,但是我没有任何运气尝试设置它。我可能会忽略一些简单的事情,因为我不太了解MVC / C#。如果在这种情况下无法使用会话变量,那么分配连接字符串的另一种方法是什么?

我将为我的想法发布伪代码,并希望有人可以对其进行纠正/改进。它不必是会话变量,我只需要能够更改连接字符串即可。

public class IncidentController : Controller
{
    private static string facility = HttpContext.Current.Session["Facility"];

    private Accident_Reporting_LAX_2019_Entities LAX_DB = new Accident_Reporting_LAX_2019_Entities(facility);
}

尝试设置facility变量时遇到的错误是“字段初始化程序无法引用非静态字段方法或属性“ Controller.HttpContext”。

2 个答案:

答案 0 :(得分:0)

要更改web.config中的配置变量-

var configuration = WebConfigurationManager.OpenWebConfiguration("~");
var section = (ConnectionStringsSection)configuration.GetSection("connectionStrings");
section.ConnectionStrings["MyConnectionString"].ConnectionString = "Data Source=...";
configuration.Save();

答案 1 :(得分:0)

无法在静态字段中访问HttpContext

按如下所示移动构造函数中的所有内容:

private string facility;
private Accident_Reporting_LAX_2019_Entities LAX_DB;
public IncidentController (){
  facility = HttpContext.Current.Session["Facility"];
  LAX_DB = new Accident_Reporting_LAX_2019_Entities(facility);
}

这样做可以使用您的Facility变量初始化每个请求