Вот что, вероятно, происходит:
- Что-то в вашем приложении сбрасывает ваш сеанс.
- Во время очистки NHibernate / ActiveRecord выполняет ваше OnUpdate ()
- OnUpdate () вызывает FindAllByProperty ()
- FindAllByProperty () пытается выполнить запрос в том же сеансе, но сеанс все еще грязный, поэтому NHibernate очищает сеанс.
- Вернуться к 2.
Таким образом, переполнение стека.
Чтобы избежать этого, попробуйте запустить FindAllByProperty () в новом сеансе:
using (new SessionScope())
if (FindAllByProperty("Title", this.Title).Length > 1)
throw new Exception("duplicate Message in update");