2010-12-08 5 views
2

J'ai une application Web avec SessionScopeWebModule activée, et je me demande comment pour gérer au mieux les exceptions métier (pas les exceptions Hibernate/DB). Je crois que AR 2.0 SessionScopeWebModule implémente implicitement la transaction - si une exception survient pendant la requête, les modifications effectuées pendant la session seront rejetées/annulées.Castle ActiveRecord SessionScopeWebModule gestion des exceptions

Pour mon application Web, la couche d'affaires sera bavard avec la DB, l'émission plusieurs CRUDs, disent

  • entité Créer un
  • Créer entité B

entité Say A a été créé. Toutefois, lors de la création de l'entité B, certaines règles métier n'ont pas été respectées et la couche de gestion renvoie une exception métier . Du point de vue de l'interface utilisateur, il est préférable de gérer l'exception d'entreprise et d'afficher un message convivial à l'utilisateur. C'est où le problème réside. Si l'exception est déjà traitée, SessionScopeWebModule va le long de penser que tout va bien à la fin de la demande et engage l'entité A dans la base de données, sans entité B.

Quelle est la meilleure pratique pour gérer les exceptions dans ce cas ? Je suis en pensant à une variable de session qui sera réinitialisée pour chaque nouvelle demande . Si une exception se produit, la variable sera marquée comme sale. Lorsque la requête se termine, SessionScopeWebModule vérifie d'abord la session pour voir si une exception s'est produite. Si c'est le cas, il appellera une FailSession .

Est-ce la voie à suivre? Et FailSession ferait le travail de rejeter changements à une session?

Merci!

Boyan

Répondre

0

sur le site http://www.summerofnhibernate.com/ je sean une web-chast sur ce sujet (ça fait partie 13), mais avec NHibernate directement (sans ActiveRecord). J'explique comment et pourquoi la Session enregistre/vide et comment l'empêcher de le faire. Peut-être que les informations de cette vidéo peuvent vous aider.

Salutations Juy Juka