public void RetryOnFailure() { using (var t = new CommittableTransaction()) using (new TxScope(t, NullLogger.Instance)) { t.EnlistVolatile(new ThrowingResource(true), EnlistmentOptions.EnlistDuringPrepareRequired); using (var c = GetConnection()) using (var cmd = c.CreateCommand()) { cmd.CommandText = "SELECT TOP 1 Val FROM Thing"; var scalar = (double)cmd.ExecuteScalar(); Console.WriteLine("got val {0}", scalar); } try { t.Commit(); Assert.Fail("first commit should fail"); } catch (ApplicationException) { Assert.That(t.TransactionInformation.Status, Is.EqualTo(TransactionStatus.Committed)); } } }