public static bool CheckConflictedException(Exception ex, out ConflictedException exC) { exC = null; if (ex is SqlException) { var sqlex = ex as SqlException; if (sqlex.ErrorCode == -2146232060) { exC = new ConflictedException("O registro possui vínculo! Não é possível fazer a exclusão!", ex); return(true); } } return(false); }
/// <summary> /// Executa uma consulta SQL e retorna as linhas afetadas /// </summary> /// <param name="query">Consulta SQL</param> /// <param name="commandType"> </param> /// <param name="parameters">Parametros para a consulta</param> /// <param name="connection">Objeto de conexão</param> /// <param name="transaction">Objeto de transação</param> /// <param name="timeOut"> </param> /// <returns>Linhas afetadas</returns> public static int ExecuteNonQuery(string query, IDbConnection connection, CommandType commandType = CommandType.Text, IDbTransaction transaction = null, int timeOut = 90, IEnumerable <IDbDataParameter> parameters = null) { if (query == null) { throw new ArgumentNullException("query"); } if (connection == null) { throw new ArgumentNullException("connection"); } var connectionOpened = connection.State == ConnectionState.Open; OpenConnection(connection, !connectionOpened); try { using (var cmd = PrepareCommand(query, connection, commandType, transaction, parameters, timeOut)) { return(cmd.ExecuteNonQuery()); } } catch (Exception ex) { ConflictedException exC; if (ConflictedException.CheckConflictedException(ex, out exC)) { throw exC; } throw new Exception(ERRO_109, ex); } finally { CloseConnection(connection, !connectionOpened); } }