MVC 5 - Как я могу установить строку подключения DbContext, используя переменную сеанса? - PullRequest
0 голосов
/ 19 февраля 2019

Мой класс 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 голосов
/ 19 февраля 2019

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

0 голосов
/ 19 февраля 2019

Чтобы изменить конфигурационную переменную в web.config -

var configuration = WebConfigurationManager.OpenWebConfiguration("~");
var section = (ConnectionStringsSection)configuration.GetSection("connectionStrings");
section.ConnectionStrings["MyConnectionString"].ConnectionString = "Data Source=...";
configuration.Save();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...