繁体   English   中英

如果在某些情况下不提交更改,是否需要手动回滚事务?

[英]Do I need to manually roll back a transaction if not committing changes given some conditions?

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

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部分。 如果我不指定怎么办? 有什么好的指导方针吗?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM