질문 :트랜잭션 Rollback()이 예외를 throw 할 수 있습니까? EF 코어와 관리 trasactions 관련
이 그 어느 try 블록 내부에 배치하는 것이 만들 수되도록 IDbContextTransaction.Rollback()
는 예외를 반환 할 기회가 있습니까?
즉
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 :이 특정 상황에서 그렇게 수동 .Rollback()
호출이 실제 코드에 요구되는 using
문으로 트랜잭션을 포함 할 수 없습니다.
이 실패 할 수 있습니다 오류 처리 내에서 롤백을 지정합니다. 예를 들어 트랜잭션을 롤백하는 동안 SqlConnection이 중단되면 예외가 발생합니다. 추가 정보 : https://msdn.microsoft.com/en-us/library/zayx5s0h(v=vs.110).aspx –
인터페이스에 대해 이야기 할 때 대답은 다음과 같습니다. 실제 구현에 따라 다릅니다. 그러나 일반적으로 : 예, 트랜잭션을 이미 커밋했거나 이미 롤백했을 때'SqlTransaction.Rollback()'이'InvalidOperationException'을 던져 버릴 수 있습니다 (MSDN의 다음 링크 참조 : https : // msdn Microsoft.com/ko/kr/library/zayx5s0h (v = vs.110) .aspx) – bassfader