public IEfStatus SaveChangesWithValidation(string userName) { var result = new EfStatus(); try { result.ResultRecordsCount = SaveChanges(userName); //then update it } catch (DbEntityValidationException ex) { //logger.Error(ex.Message, this, ex); return(result.SetErrors(ex.EntityValidationErrors)); } catch (DbUpdateException ex) { //logger.Error(ex.Message, this, ex); var sqlException = ex.InnerException.InnerException as System.Data.SqlClient.SqlException; if ((sqlException != null) && (sqlException.Number == 2601 || sqlException.Number == 2627)) { return(result.SetErrors(new List <ValidationResult> { new ValidationResult("Unic Constraint Violation") })); } else { return(result.SetErrors(new List <ValidationResult> { new ValidationResult("Saving data error") })); } } //else it isn't an exception we understand so it throws in the normal way return(result); }
public EfStatus SaveChangesWithValidation() { var status = new EfStatus(); try { SaveChanges(); //then update it } catch (DbEntityValidationException ex) { return(status.SetErrors(ex.EntityValidationErrors)); } return(status); }
public async Task <EfStatus> SaveChangesWithValidationAsync(CancellationToken cancellationToken) { var status = new EfStatus(); try { await SaveChangesAsync(cancellationToken); } catch (DbEntityValidationException ex) { return(status.SetErrors(ex.EntityValidationErrors)); } catch (DbUpdateException ex) { var decodedErrors = TryDecodeDbUpdateException(ex); if (decodedErrors == null) { throw; //падаем, если что-то неизвестное } return(status.SetErrors(decodedErrors)); } return(status); }