使用 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。为什么?以及如何解决这个问题?