I am using NHibernate in a WinForms application.
In this application, I make use of 'long sessions'; consider that I
have an ISession that is kept around as long as my Form is open.

That is:
I load an object using this Session when the form is opened.
When the form is being closed, I check if I have to save the object,
and if so, I save it using the same session.

During 'user think time', I disconnect the Session, so that the DB
connection is not kept open for a long period of time.

The issue that I now have, is that my object contains a collection
which is lazy loaded.
Since I disconnect my session once the object has been loaded, I get
an exception offcourse when I want to access the collection of that
object.  (I do not always need this collection).

Therefore, when I need to access the collection, I explicitly
reconnect the Session, and disconnect it afterwards.  Offcourse, this
is not very 'transparant' IMHO.
It would be nice if there would be some way to reconnect the session
implicitly; the client should not even know that the collection that I
want to retrieve, is a lazyloaded collection.

I've tried creating an Intercepter, in where I've overriden the
SetSession, Load and Instantiate methods.  In this way, I thought that
I could reconnect the session each time the Load or Instantiate
methods were invoked, and when I saw that the session was
disconnected, I could reconnect the session.
But, this doesn't work.

Another option, would be that I keep my Session connected during 'user
think time', but IMHO , this is not a viable option; one never knows
how long the Form (and therefore the session) will be kept open, and
connected to the DB.

Is there any other way on how I could make this a bit more
transparant ?
Maybe it is an idea to add a method to the Interceptor which is
invoked each time something is being lazy loaded (just before it is
lazy loaded) ?
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to