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.
Can you only have one session running per thread at all times?
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.
Can we have a Dictionary of Sessions on the one thread?
Any advice on session management is appreciated.
1 - You can have as many sessions as your use case requires.
2 - That's fine, based on 1.
3 - You can put the session variables in a dictionary or any other collection.
What you shouldn't do unless you really know what you're doing and why is: