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