Castle ActiveRecord SessionScopeWebModule обработка исключений - PullRequest
2 голосов
/ 08 декабря 2010

У меня есть веб-приложение с включенным SessionScopeWebModule, и мне интересно, как лучше обрабатывать бизнес-исключения (не исключения Hibernate / DB).

Я считаю, что AR 2.0 SessionScopeWebModule неявно реализует транзакцию - если во время исключения возникаетзапрос, изменения, сделанные во время сеанса, будут отброшены / отменены.

Для моего веб-приложения бизнес-уровень будет болтлив с БД, выпуская несколько CRUD, скажем

  • СоздатьСущность A
  • Создать сущность B

Скажем, сущность A была создана.Однако при создании объекта B некоторые бизнес-правила не были соблюдены, и бизнес-уровень выдает бизнес-исключение.

С точки зрения пользовательского интерфейса лучше всего «обработать» бизнес-исключение и отобразить дружественное сообщение пользователю.Вот в чем проблема.Если исключение уже обработано, SessionScopeWebModule продолжает думать, что в конце запроса все в порядке, и передает объект A в базу данных без объекта B.

Каков наилучший способ обработки исключений в этом случае?Я имею в виду переменную сеанса, которая будет сбрасываться при каждом новом запросе.Если возникает исключение, переменная будет помечена как грязная.Когда запрос заканчивается, SessionScopeWebModule сначала проверит сеанс, чтобы увидеть, произошло ли какое-либо исключение.Если это так, он вызовет FailSession.

Это путь?И будет ли FailSession отменять изменения в сеансе?

Спасибо!

Боян

1 Ответ

0 голосов
/ 05 января 2012

на сайте http://www.summerofnhibernate.com/ У меня был веб-раздел об этой теме (часть 13), но напрямую с NHibernate (без ActiveRecord). Я объясняю, как и почему сессия сохраняет / сбрасывает и как остановить это. Возможно, информация из этого видео поможет вам.

Поздравления Juy Juka

...