示例:使用事务,仅在满足给定条件时提交。
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
部分。如果我没有说明,会发生什么?
有什么好的指导方针吗?
答案 0 :(得分:2)
您不需要手动调用Rollback,因为您正在使用using语句。
没有必要明确调用Rollback
。如果尚未调用Commit()
,则将回滚该事务。
DbContextTransaction.Dispose
方法将在using块的末尾调用。如果事务未成功提交,它将自动回滚事务