与EF Core管理事务相关的问题:
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;
}
注意:在这种特定情况下,不可能将事务嵌入到using
语句中,因此在实际代码中需要手动调用.Rollback()
。
SqlTransaction.Rollback()
将在事务已经提交或已经回滚时抛出InvalidOperationException
(请参见MSDN上的以下链接:https://msdn.microsoft.com/en-us/library/zayx5s0h(v=vs.110).aspx) - bassfader