public void PerformPieceOfOperation(ISession prevSession) { Assert.IsNotNull(prevSession); using (ISession sess = sessManager.OpenSession()) { Assert.IsNotNull(sess); Assert.IsTrue(SessionDelegate.AreEqual(sess, prevSession)); } }
protected bool EnlistIfNecessary(bool weAreSessionOwner, ITransaction transaction, SessionDelegate session) { if (transaction == null) { return(false); } IList list = (IList)transaction.Context["nh.session.enlisted"]; bool shouldEnlist = false; if (list == null) { list = new ArrayList(); list.Add(session); transaction.Context["nh.session.enlisted"] = list; shouldEnlist = true; } else { shouldEnlist = true; foreach (ISession sess in list) { if (SessionDelegate.AreEqual(session, sess)) { shouldEnlist = false; break; } } } if (shouldEnlist) { // TODO: propagate IsolationLevel, expose as transaction property transaction.Enlist(new ResourceAdapter(session.BeginTransaction())); if (weAreSessionOwner) { transaction.RegisterSynchronization( new SessionDisposeSynchronization(session)); } } return(true); }
public void SharedSession() { var manager = container.Resolve <ISessionManager>(); ISession session1 = manager.OpenSession(); ISession session2 = manager.OpenSession(); ISession session3 = manager.OpenSession(); Assert.IsNotNull(session1); Assert.IsNotNull(session2); Assert.IsNotNull(session3); Assert.IsTrue(SessionDelegate.AreEqual(session1, session2)); Assert.IsTrue(SessionDelegate.AreEqual(session1, session3)); session3.Dispose(); session2.Dispose(); session1.Dispose(); Assert.IsTrue(container.Resolve <ISessionStore>().IsCurrentActivityEmptyFor(Constants.DefaultAlias)); }