public void transaction_controller_implicitly_opens_the_connection()
        {
            using (var ctx = new SqlTransactionCallContext(TestHelper.Monitor))
            {
                var controller = ctx.GetConnectionController(TestHelper.GetConnectionString());
                BeginTranAndCommit(controller);
                controller.Connection.State.Should().Be(ConnectionState.Closed);

                // Explicit openening.
                using (controller.ExplicitOpen())
                {
                    BeginTranAndCommit(controller);
                    controller.Connection.State.Should().Be(ConnectionState.Open);
                }
                controller.Connection.State.Should().Be(ConnectionState.Closed);
            }

            void BeginTranAndCommit(ISqlConnectionTransactionController controller)
            {
                ISqlTransaction tran = controller.BeginTransaction();

                controller.Connection.State.Should().Be(ConnectionState.Open);
                tran.IsNested.Should().BeFalse();
                tran.Status.Should().Be(SqlTransactionStatus.Opened);
                tran.Commit();
                tran.Status.Should().Be(SqlTransactionStatus.Committed);
                tran.Invoking(t => t.Dispose()).Should().NotThrow();
            }
        }