如果在某些条件下没有提交更改,是否需要手动回滚事务?

时间:2017-07-20 08:36:33

标签: c# entity-framework transactions

示例:使用事务,仅在满足给定条件时提交。

using (var transaction = context.Database.BeginTransaction())
    // ...
    if (modelState.IsValid) {
        transaction.Commit();
    }
}

是否需要:

using (var transaction = context.Database.BeginTransaction())
    // ...
    if (modelState.IsValid) {
        transaction.Commit();
    } else {
        transaction.Rollback();
    }
}

或者不需要else部分。如果我没有说明,会发生什么? 有什么好的指导方针吗?

1 个答案:

答案 0 :(得分:2)

您不需要手动调用Rollback,因为您正在使用using语句。 没有必要明确调用Rollback。如果尚未调用Commit(),则将回滚该事务。

DbContextTransaction.Dispose方法将在using块的末尾调用。如果事务未成功提交,它将自动回滚事务