public void Should_revert_nested_transactions_when_rolling_back_outer_transaction()
{
using (var outer = _target.BeginTransaction())
{
_target.Exec("INSERT INTO Tbl(IntValue) VALUES(1)");
using (var inner = _target.BeginTransaction())
{
_target.Exec("INSERT INTO Tbl(IntValue) VALUES(2)");
inner.Commit();
}
using (var inner = _target.BeginTransaction())
{
_target.Exec("INSERT INTO Tbl(IntValue) VALUES(3)");
using (var innerInner = _target.BeginTransaction())
{
_target.Exec("INSERT INTO Tbl(IntValue) VALUES(4)");
innerInner.Commit();
}
inner.Commit();
}
_target.Exec("INSERT INTO Tbl(IntValue) VALUES(5)");
outer.Rollback();
}
_target.Scalar<int>("SELECT COUNT(*) FROM Tbl").Should().Be.EqualTo(0);
}