بعضی وقتها پیش میآید که update شدن یک آبجکت dirty باعث dirty شدن یک جای دیگر شده و آن هم به نوبه خودش نیاز به update پیدا کرده و این زنجیره آنقدر ادامه پیدا کرده که برنامه در loop افتاده و در اثر Stack Overflow از کار میافتد. البته مشکل همیشه دقیقاً به همین حالت نیست اما علت خطا کم و بیش همین است.
به عنوان مثال فرض کنید که برای به روز رسانی یک entity نیاز دارید به دیتابیس مراجعه کرده و چیزی را در آنجا چک کنید. با اولین مراجعه به دیتابیس، NH اول به طور خودکار session را flush کرده و بعد از آن اطلاعات را از دیتابیس فراخوانی میکند. اما به هنگام flush شدن، entity مورد نظر ما هنوز dirty است و نیاز به ذخیره در دیتابیس دارد. این روال باعث به روز رسانی زنجیرهای entity شده و در نهایت باعث بروز stack overflow میگردد.
یکی از راه حلهای رفع این مشکل استفاده از sessionهای مستقل از هم است. چون dirty checking هر sessionی مستقل از sessionهای دیگر است. در Castle AR میتوان از روشی مشابه زیر استفاده کرد:
{
//do something with this separate session
}