1
与EF核心管理交易相关的问题:事务Rollback()是否有机会抛出异常?
IDbContextTransaction.Rollback()
是否有机会返回异常,以便将它置于try块内有意义?
即
try
{
//...
if(condition)
transaction.Commit();
else
throw methodReturn.Exception;
}
catch (Exception e)
{
try // Does this try make any sense?
{
transaction.Rollback();
}
catch
{
// Log
}
throw e;
}
PD:在这种特定情况下是不可能嵌入交易成using
语句,所以手动.Rollback()
呼叫会在实际的代码需要。
当然回滚可能会失败中指定回滚。例如,如果SqlConnection在回滚事务时中断,则会引发异常。更多信息:https://msdn.microsoft.com/en-us/library/zayx5s0h(v=vs.110).aspx –
由于你在谈论一个接口,答案是:它取决于实际的实现。但总的来说:是的,它可能会抛出一个异常,例如当事务已经被提交或者已经被回滚时,'SqlTransaction.Rollback()'会抛出一个'InvalidOperationException'(参见MSDN上的以下链接:https:// msdn .microsoft.com/en-us/library/zayx5s0h(v = vs.110).aspx) – bassfader