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 にバインドされているようです。なんで?また、これを別の方法で解決するにはどうすればよいでしょうか。