Используя Castle ActiveRecord, я столкнулся с проблемой при отложенной загрузке.
Следующие работы (очевидно)
using (new SessionScope())
{
User singleUser = User.FindFirst(...)
UserGroup groups = singleUser.Groups; // Lazy-loading groups.
}
Поскольку мне нужно изменить фильтры сеанса в определенном контексте (используя перехватчики), я создаю новый SessionScope.
using (new SessionScope())
{
User singleUser;
EnableVariousFiltersInThisThread();
using (new SessionScope())
{
singleUser = User.FindFirst(...);
}
DisableVariousFiltersInThisThread();
UserGroup groups = singleUser.Groups; // Lazy-loading groups.
}
Последняя строка «singleUser.Groups» выдает исключение LazyInitializationException: «не удалось лениво инициализировать коллекцию ролей: Группы, ни один сеанс или сеанс не был закрыт».
Однако все остальные сеансовые операции работают правильно. Таким образом, кажется, что «singleUser» связан с теперь расположенным SessionScope. Зачем? И как это можно решить альтернативно?