diff --git a/EntityFramework.Exceptions.Common/ExceptionProcessorInterceptor.cs b/EntityFramework.Exceptions.Common/ExceptionProcessorInterceptor.cs index 85b3b89..8352bf7 100644 --- a/EntityFramework.Exceptions.Common/ExceptionProcessorInterceptor.cs +++ b/EntityFramework.Exceptions.Common/ExceptionProcessorInterceptor.cs @@ -29,9 +29,7 @@ protected internal enum DatabaseError /// public override void SaveChangesFailed(DbContextErrorEventData eventData) { - var dbUpdateException = eventData.Exception as DbUpdateException; - - ProcessException(eventData, dbUpdateException); + ProcessException(eventData, eventData.Exception as DbUpdateException); base.SaveChangesFailed(eventData); } @@ -39,9 +37,7 @@ public override void SaveChangesFailed(DbContextErrorEventData eventData) /// public override Task SaveChangesFailedAsync(DbContextErrorEventData eventData, CancellationToken cancellationToken = new CancellationToken()) { - var dbUpdateException = eventData.Exception as DbUpdateException; - - ProcessException(eventData, dbUpdateException); + ProcessException(eventData, eventData.Exception as DbUpdateException); return base.SaveChangesFailedAsync(eventData, cancellationToken); } @@ -49,26 +45,24 @@ public override void SaveChangesFailed(DbContextErrorEventData eventData) [StackTraceHidden] private void ProcessException(DbContextErrorEventData eventData, DbUpdateException dbUpdateException) { - if (eventData.Exception.GetBaseException() is T providerException) - { - var error = GetDatabaseError(providerException); + if (dbUpdateException == null || eventData.Exception.GetBaseException() is not T providerException) return; + + var error = GetDatabaseError(providerException); - if (error != null && dbUpdateException != null) - { - var exception = ExceptionFactory.Create(error.Value, dbUpdateException, dbUpdateException.Entries); + if (error == null) return; + + var exception = ExceptionFactory.Create(error.Value, dbUpdateException, dbUpdateException.Entries); - switch (exception) - { - case UniqueConstraintException uniqueConstraint when eventData.Context != null: - SetConstraintDetails(eventData.Context, uniqueConstraint, providerException); - break; - case ReferenceConstraintException referenceConstraint when eventData.Context != null: - SetConstraintDetails(eventData.Context, referenceConstraint, providerException); - break; - } - throw exception; - } + switch (exception) + { + case UniqueConstraintException uniqueConstraint when eventData.Context != null: + SetConstraintDetails(eventData.Context, uniqueConstraint, providerException); + break; + case ReferenceConstraintException referenceConstraint when eventData.Context != null: + SetConstraintDetails(eventData.Context, referenceConstraint, providerException); + break; } + throw exception; } private void SetConstraintDetails(DbContext context, UniqueConstraintException exception, Exception providerException)