title: NHibernate CallSessionContext vs ThreadStaticSessionContext
body: <p>Is someone able to explain NHibernate's CallSessionContext, and contrast it to ThreadStaticSessionContext.  </p>
  
  <p>The best explaination I have been able to find, has been from the <a href="http://nhforge.org/doc/nh/en/index.html?bcsi_scan_F246D99C5E000224=0&amp;bcsi_scan_filename=index.html#architecture-current-session" rel="nofollow noreferrer">NHibernate documentation</a> :</p>
  
  <blockquote>
    <ul>
    <li><p>NHibernate.Context.CallSessionContext- current sessions are tracked by CallContext. You are responsible to
    bind and unbind an  ISession instance
    with static methods of class
    CurrentSessionContext. </p></li>
    <li><p>NHibernate.Context.ThreadStaticSessionContext - current session is stored in a thread-static variable. This context
    only supports one session factory. You
    are responsible to bind and unbind an
    ISession instance with static methods
    of class CurrentSessionContext.</p></li>
    </ul>
  </blockquote>
  
  <p>I am familiar with the WebSessionContext, as my usual use of NHibernate is in web applications. This time I am building a WCF service, to be hosted in IIS, and am trying to determine which implementation of ICurrentSessionContext is preferable.   </p>
  
  <p>I would like to know the implications of choosing one vs the other, both in this particular case (WCF service), and in general for future reference.    </p>