Это происходит потому, что сеанс включает в себя то, что обычно называют кэшем первого уровня. Он просто содержит все сущности, которые Сессия «видела» за время своей жизни, чтобы избежать повторного извлечения их из базы данных.
Вы можете использовать session.Clear()
, чтобы очистить сеанс перед выполнением каких-либо запросов. Если вы делаете это в своем докладчике после каждого действия навигации, у вас должно быть все в порядке.
Другой подход заключается в определении класса SessionManager, который управляет вашим сеансом, чтобы два докладчика совместно использовали свой сеанс. Это может быть лучшим решением, если вы можете найти способ определить продолжительность жизни одного сеанса (я бы не рекомендовал хранить один и тот же сеанс для всего выполнения программы).