В сеансе нет ничего не-MVC, это жизненно важная часть Интернета, и большинство сайтов используют его каким-то образом. У вас действительно есть два основных варианта. Либо сохраните объект в базе данных между страницами (что означает сохранение неполного объекта), либо поместите его в сеанс. Оба имеют свои преимущества и недостатки.
В сеансе вам не нужно сохранять частичный объект в базе данных, но если пользователь уходит или время сеанса истекает, вы теряете всю эту информацию. Это также может привести к увеличению объема памяти на пользователя, а при масштабировании это вызывает некоторые другие проблемы. (все это можно решить с помощью sticky-сессии на балансировщике нагрузки или в центральном хранилище сеансов).
Способ с базой данных лучше во многих отношениях, но обычно вы не хотите сохранять неполный объект в базе данных, один компромисс - создать другую таблицу и сохранить сериализованный объект в эту таблицу. Он не проходит через ваши реальные таблицы, и поэтому вам не нужно идти на компромисс с ограничениями вашей базы данных. (вы также можете хранить данные сеанса в базе данных, которая в основном делает то же самое)
В конце концов, это призыв к суждению между двумя способами, которым я пользовался оба года.