Я не могу вспомнить слишком много случаев, когда явный откат является правильным подходом, за исключением случаев, когда требуется строгая политика контроля изменений. Но опять же, я немного медленнее в освоении.

веденном ниже коде, если при выполнении операторов SQL выдается какое-либо исключение, следует ожидать неявного отката транзакции, поскольку транзакция не была зафиксирована, она выходит из области видимости и удаляется:

using (DbTransaction tran = conn.BeginTransaction())
{
    //
    // Execute SQL statements here...
    //
    tran.Commit();
}

Является ли приведенное выше приемлемой практикой, или следует перехватить исключение и явно вызвать функцию tran.Rollback (), как показано ниже:

using (DbTransaction tran = conn.BeginTransaction())
{
    try
    {
        //
        // Execute SQL statements here...
        //
        tran.Commit();
    }
    catch
    {
        tran.Rollback();
        throw;
    }
}

Ответы на вопрос(3)

Ваш ответ на вопрос