public void Should_throw_exception_and_save_nothing_when_commit_outer_transaction_and_at_least_one_inner_transaction_has_been_rollback()
{
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.Rollback();
}
_target.Exec("INSERT INTO Tbl(IntValue) VALUES(3)");
Executing.This(() => outer.Commit()).Should().Throw<DataException>()
.And.Exception.Message.Should().Be.EqualTo("Cannot commit transaction when one of the nested transaction has been rolled back");
}
_target.FieldValue<IDbTransaction>("_tr").Should().Be.Null();
_target.Scalar<int>("SELECT COUNT(*) FROM Tbl").Should().Be.EqualTo(0);
}