2008-12-11 6 views
32

J'ai lu environ Nhibernate depuis un moment et j'ai essayé de l'utiliser pour un site que j'implémente. J'ai lu the article by Billy McCafferty sur les meilleures pratiques de NHibernate, mais je n'ai vu aucune indication sur le meilleur endroit pour traiter les transactions.Meilleures pratiques NHibernate Transactions

J'ai pensé mettre ce code dans l'objet DAO (Data Access Object), mais je ne sais pas comment gérer les cas dans lesquels plus d'un DAO est utilisé. Quels sont les meilleurs endroits pour mettre du code de transaction dans votre application NHibernate?

Répondre

10

Cela dépend vraiment de votre environnement. Par exemple, nous utilisons le modèle Open-Session-In-View (lien Java mais le modèle est le même dans .Net) sur un site ASP.Net et utilisons un HttpModule pour contrôler les sessions et les transactions. HttpModule ouvre une session et démarre une transaction dans l'événement BeginRequest, puis valide la transaction et ferme la session dans l'événement EndRequest. Différents environnements et modèles de communication conduiront à différentes stratégies de gestion de session/transaction.

Il y a beaucoup de discussion sur les différentes stratégies dans le NHibernate Users Group aussi bien que sur le Web en général.