public WhenCallingOpenAsyncReadOnlySession_MultipleTimes()
            {
                var sessionFactory = new SessionFactory("SqlConnection", new Mock <IDbDriver>().Object, new Mock <ISqlDialect>().Object);

                this.readOnlyAsyncSession1 = sessionFactory.OpenAsyncReadOnlySession();
                this.readOnlyAsyncSession2 = sessionFactory.OpenAsyncReadOnlySession();
            }
            public WhenCallingOpenAsyncReadOnlySession_MultipleTimes()
            {
                var sessionFactory = new SessionFactory("SqlConnection", new Mock<IDbDriver>().Object, new Mock<ISqlDialect>().Object);

                this.readOnlyAsyncSession1 = sessionFactory.OpenAsyncReadOnlySession();
                this.readOnlyAsyncSession2 = sessionFactory.OpenAsyncReadOnlySession();
            }
            public WhenCallingOpenAsyncReadOnlySession()
            {
                var mockDbDriver = new Mock<IDbDriver>();
                mockDbDriver.Setup(x => x.CreateConnection());

                var mockSqlDialect = new Mock<ISqlDialect>();
                mockSqlDialect.Setup(x => x.SqlCharacters).Returns(this.sqlCharacters);

                var sessionFactory = new SessionFactory("SqlConnection", mockDbDriver.Object, mockSqlDialect.Object);

                this.readOnlyAsyncSession = sessionFactory.OpenAsyncReadOnlySession();
            }
            public WhenCallingOpenAsyncReadOnlySession_SpecifyingConnectionScope()
            {
                var mockDbDriver = new Mock <IDbDriver>();

                mockDbDriver.Setup(x => x.CreateConnection()).Returns(new Mock <IDbConnection>().Object);

                var mockSqlDialect = new Mock <ISqlDialect>();

                mockSqlDialect.Setup(x => x.SqlCharacters).Returns(this.sqlCharacters);

                var sessionFactory = new SessionFactory("SqlConnection", mockDbDriver.Object, mockSqlDialect.Object);

                this.readOnlyAsyncSession = sessionFactory.OpenAsyncReadOnlySession(ConnectionScope.PerSession);
            }
        private static void OnActionExecuted(IAsyncReadOnlySession session, Exception exception)
#endif
        {
            if (session.CurrentTransaction == null)
            {
                return;
            }

            var transaction = session.CurrentTransaction;

            try
            {
                if (transaction.IsActive && exception == null)
                {
                    transaction.Commit();
                }
                else if (transaction.IsActive && exception != null)
                {
                    transaction.Rollback();
                }
            }
            finally
            {
                transaction.Dispose();
            }
        }
        private static void OnActionExecuted(IAsyncReadOnlySession session)
#endif
        {
            if (session != null)
            {
                session.Dispose();
            }
        }