NHibernate: What are child sessions and why and when should I use them?

Posted by stefando on Stack Overflow See other posts from Stack Overflow or by stefando
Published on 2011-01-15T09:50:32Z Indexed on 2011/01/15 9:53 UTC
Read the original article Hit count: 212

Filed under:

In the comments for the ayende's blog about the auditing in NHibernate there is a mention about the need to use a child session:session.GetSession(EntityMode.Poco).

As far as I understand it, it has something to do with the order of the SQL operation which session.Flush will emit. (For example: If I wanted to perform some delete operation in the pre-insert event but the session was already done with deleting operations, I would need some way to inject them in.)

However I did not find documentation about this feature and behavior.

Questions:

  • Is my understanding of child sessions correct?

  • How and in which scenarios should I use them?

  • Are they documented somewhere?

  • Could they be used for session "scoping"?
    (For example: I open the master session which will hold some data and then I create 2 child-sessions from the master one. I'd expect that the two child-scopes will be separated but the will share objects from the master session cache. Is this the case?)

  • Are they first class citizens in NHibernate or are they just hack to support some edge-case scenarios?

Thanks in advance for any info.

© Stack Overflow or respective owner

Related posts about nhibernate