Frage an die Verwaltung trasactions mit EF-Core bezogen werden:Hat eine Transaktion Rollback() eine Chance, eine Ausnahme auszulösen?
Hat ein IDbContextTransaction.Rollback()
eine Chance haben, eine Ausnahme zurück, so dass es überhaupt Sinn, es zu platzieren in einem Try-Block machen könnte?
heißen
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: In dieser besonderen Situation ist es nicht möglich, die Transaktion in eine using
Anweisung einbetten, so dass ein manueller .Rollback()
Anruf in dem realen Code erforderlich ist.
Natürlich Rollback fehlschlagen kann Handling. Wenn beispielsweise die SqlConnection beim Zurücksetzen der Transaktion unterbrochen wird, wird eine Ausnahme ausgelöst. Weitere Informationen: https://msdn.microsoft.com/en-us/library/zayx5s0h(v=vs.110).aspx –
Da Sie über eine Schnittstelle sprechen, ist die Antwort: Es hängt von der tatsächlichen Implementierung ab. Aber im Allgemeinen: Ja, es könnte eine Ausnahme auslösen, zum Beispiel wird 'SqlTransaction.Rollback()' eine 'InvalidOperationException' auslösen, wenn die Transaktion bereits festgeschrieben wurde oder bereits zurückgesetzt wurde (siehe folgenden Link auf MSDN: https: // msdn .microsoft.com/de-de/library/zayx5s0h (v = vs.110) .aspx) – bassfader