Коли клієнт відправляє запит до сервера, перше, що робить сервер — це звертається до бази даних, щоб отримати із неї данні необхідні для запиту. Після чого він (сервер) виконує всю необхідну роботу та записує дані назад у сховище. Якщо дані ідентифікують сеанс та вимагають довготривалого збереження, але короткотривалої взаємодії рішенням буде зберігати сеанс в базі даних та кешувати його на момент роботи.
Таким чином, даний шаблон пропонує зберігати стан сеансу в базі даних.
class Auth
{
public User { get; private set; }
public void Login(int id)
{
var userRecord = db.GetUser();
this.User = new User(userRecord.Name, userRecord.Email);
}
}
Якщо сеанс складається із декількох кроків та необхідно не втрачати даних, то в міру заповнення їх можна зберігати у сховищі. Так, наприклад, при реалізації опитувальника необхідно, щоб користувач не втратив заповнені дані. Тоді при заповнені кожного поля, можна запам'ятовувати їх у сховищу, а при повторному відкриті сторінки відновлювати увесь стан.
class SurveyService
{
public void SaveAnswer(int answerId, string answerValue)
{
db.SurveyAnswers.Add(answerId, answerValue);
}
public IReadOnlyCollection<SurveyAnswer> OpenSurvey(int surveyId)
{
return db.SurveyAnswers.Where(s => s.SurveyId == surveyId);
}
}