Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NHibernate Session Management Advice

I need some advice on NHibernate Session Management for a C# WinForms application.

I am currently porting an application to use NHibernate. I am also employing a UnitOfWork pattern as described in the link below;

http://nhforge.org/wikis/patternsandpractices/nhibernate-and-the-unit-of-work-pattern.aspx

My question relates to Sessions.

  1. Can you only have one session running per thread at all times?

  2. I have a scenario in which a Session (UnitOfWork) may be open for a form shown by the application but the user opens another form (i.e. Tools - Options) which I would like to have its own UnitOfWork. Clearly in this instance it would make more sense to open another Session for the "Tools - Options" form and not use the currently open session for the underlying form.

  3. Can we have a Dictionary of Sessions on the one thread?

Any advice on session management is appreciated.

like image 754
Hugusta Avatar asked Dec 29 '10 00:12

Hugusta


1 Answers

+1 on what Jay said. I would also recommend reading Oren Eini's article on Building a Desktop To-Do Application with NHibernate:

http://msdn.microsoft.com/en-us/magazine/ee819139.aspx

It uses WPF as the UI technology, but everything he says (wrt NHibernate in desktop apps) is equally relevant for WinForms.

like image 106
James Kovacs Avatar answered Sep 20 '22 11:09

James Kovacs