ASP.NET CORE Альтернативы сеансов - PullRequest
0 голосов
/ 30 января 2019

У меня есть приложение ASP.NET WebForms, которое активно работает с сессиями.На самом деле, у меня есть модель под названием Анкета

public class myQuestionnaire
{
        public int ID { get; set; }
        public string Name { get; set; }
        public string Status { get; set; } = "A";
        public List<Question> Questions { get; set; } = new List<sQuestion>();
}

Анкета содержит список вопросов

public class Question
{
        public int ID { get; set; }
        public string Name { get; set; } = "";
        public string Remarks { get; set; } = "";
        public List<QuestionAnswer> Answers { get; set; } = new List<QuestionAnswer>();
}

public class QuestionAnswer
{
        public int ID { get; set; }
        public string Name { get; set; }
        public string Text { get; set; }
        public int Weight { get; set; }
}

У меня есть форма обслуживания, в которой я загружаю Анкету из базы данных, сохраняюэто в переменной сеанса, и для каждого изменения, которое мне нужно выполнить в вопроснике, я загружаю его из сеанса вместо того, чтобы загружать каждый раз из БД.

Например, чтобы изменить имя вопросника, у меня есть следующий веб-методкоторый запускается через javascript, когда имя анкеты в форме изменяется


[WebMethod(EnableSession = true)]
public void ChangeName(string new_name)
{
    myQuestionnaire _q = () Session["MyQuestionnaireSessionName"]; 
    _q.Name = HttpUtility.UrlDecode(name);
}

Теперь мы решили перенести решение в .NET Core, но мы столкнулись с некоторыми проблемами при использовании вышеуказанного подхода.На самом деле, невозможно сохранить объект в сеансе без сериализации его в строку.Если мы сделаем это, то мы не сможем получить доступ к объекту напрямую, поэтому нам нужно будет вручную сериализовать его и десериализовать его при каждом изменении, которое мы выполняем над объектом.

Второй вопрос: существует ли альтернативный способ реализациивышеупомянутый случай без сохранения всего объекта в базе данных для каждого временного изменения.Мы думаем о файлах cookie, кэше и viewstate, но я недостаточно знаком с MVC и CORE и не знаю плюсов и минусов каждого из них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...