public virtual SubmitResult CustomizeException(Exception ex, string failMessage = null) { var res = new SubmitResult { Code = 101, Message = failMessage }; res.SetException(ex); var sqlException = GetSqlException(ex); if (sqlException != null) { if (sqlException.Number == 547) { DeleteResult deleteResult = res.MapToResult <DeleteResult>(); deleteResult.Code = 547; deleteResult.CanDelete = false; deleteResult.TableName = SqlInterpreter.N00547(sqlException.Message)[5].Split('.')[1]; return(deleteResult); } } return(res); }
public virtual DeleteResult CanDelete(object id) { if (!IdExists(id)) { return new DeleteResult { CanDelete = true, Code = 0 } } ; using (var txscope = new TransactionScope(TransactionScopeOption.RequiresNew)) { DeleteResult res = new DeleteResult(); try { DeleteById(id); DbContext.SaveChanges(); txscope.Dispose(); res.AffectedRows = 0; res.CanDelete = true; res.Code = 0; return(res); //txscope.Complete(); } catch (Exception ex) { txscope.Dispose(); res.AffectedRows = 0; res.CanDelete = false; res.Code = 1; res.ExceptionMessage = ex.Message; int? number = ((SqlException)ex.InnerException)?.Number; string tableName = ""; if (number == 547) { tableName = SqlInterpreter.N00547(ex.InnerException.Message)[5].Split('.')[1]; } res.TableName = tableName; // Log error return(res); } } }