public DatabaseObjectInfo(string databaseObjectName, EDatabaseObjectType type, List<StoredProcedureParameter> parameters = null, string query = null)
 {
     Name = databaseObjectName;
     StoredProcedureParameters = parameters;
     QuerySql = query;
     DatabaseObjectType = type;
 }
        /// <summary>
        /// Carrega os campos do objeto alvo
        /// </summary>
        /// <param name="nomeObjeto">nome do objeto</param>
        /// <param name="tipo">tipo do objeto (tabela,view,procedure)</param>
        /// <param name="retornaDados">REtorna a lista de campos obtidas</param>
        private List<ColumnInfo> CarregaCamposObjeto(string nomeObjeto, EDatabaseObjectType tipo, bool retornaDados = false)
        {
            try
            {
                var colunasObjeto = new List<ColumnInfo>();

                switch (tipo)
                {
                    case EDatabaseObjectType.Tabela:
                        colunasObjeto = Gerador.TableMapping.ListAllFieldsFromTable(BancoSelecionado, nomeObjeto, User);
                        break;

                    case EDatabaseObjectType.View:
                        colunasObjeto = Gerador.ViewMapping.ListAllFieldsFromViews(BancoSelecionado, nomeObjeto, User);
                        break;

                    case EDatabaseObjectType.Procedure:
                        if (MessageBox.Show(string.Format("Algumas procedures podem desencadear uma sequencia de insert's, update's e delete's.\nExecute apenas procedures que você conheça o funcionamento e que retornem dados.\nDeseja executar a procedure '{0}' ?", nomeObjeto), "ATENÇÃO", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
                        {
                            colunasObjeto = Gerador.StoredProcedureMapping.ListAllFieldsFromStoredProcedure(BancoSelecionado, nomeObjeto, Parameters, User);
                        }
                        else
                        {
                            return retornaDados ? colunasObjeto : new List<ColumnInfo>();
                        }

                        break;

                    default:
                        throw new ArgumentOutOfRangeException("tipo", "Tipo inválido");
                }

                if (retornaDados)
                {
                    return colunasObjeto;
                }
                //Carrega o objeto que deve ser exibido

                if (_selectedObjects == null)
                {
                    return new List<ColumnInfo>();
                }

                return colunasObjeto;
            }
            catch (Exception ex)
            {
                MessageBox.Show(string.Format("Erro:\n{0}", ex.Message), ex.Source, MessageBoxButtons.OK, MessageBoxIcon.Error);
                return null;
            }
        }
        /// <summary>
        ///     Carrega os campos do objeto alvo
        /// </summary>
        /// <param name="nomeObjeto">nome do objeto</param>
        /// <param name="tipo">tipo do objeto (tabela,view,procedure)</param>
        private void CarregaCamposObjeto(string nomeObjeto, EDatabaseObjectType tipo)
        {
            try
            {
                if (ObjetosSelecionado == null)
                {
                    var colunasObjeto = new List<ColumnInfo>();

                    switch (tipo)
                    {
                        case EDatabaseObjectType.Tabela:
                            colunasObjeto = Gerador.TableMapping.ListAllFieldsFromTable(BancoSelecionado, nomeObjeto,
                                DadosLogin);
                            break;

                        case EDatabaseObjectType.View:
                            colunasObjeto = Gerador.ViewMapping.ListAllFieldsFromViews(BancoSelecionado, nomeObjeto,
                                DadosLogin);
                            break;

                        case EDatabaseObjectType.Procedure:
                            Parametros =
                                Gerador.StoredProcedureMapping.ListAllStoredProceduresParameters(BancoSelecionado,
                                    DadosLogin, nomeObjeto);

                            if (Parametros.Count > 0)
                            {
                                var frm = new frmParametros {Parametros = Parametros};

                                if (frm.ShowDialog(this) == DialogResult.Yes)
                                {
                                    Parametros = frm.Parametros;
                                }
                                frm.Dispose();
                            }

                            if (
                                MessageBox.Show(
                                    string.Format(
                                        "Algumas procedures podem desencadear uma sequencia de insert's, update's e delete's.\nExecute apenas procedures que você conheça o funcionamento e que retornem dados.\nDeseja executar a procedure '{0}' ?",
                                        nomeObjeto), "ATENÇÃO", MessageBoxButtons.YesNo, MessageBoxIcon.Warning,
                                    MessageBoxDefaultButton.Button2) == DialogResult.Yes)
                            {
                                colunasObjeto =
                                    Gerador.StoredProcedureMapping.ListAllFieldsFromStoredProcedure(BancoSelecionado,
                                        nomeObjeto, Parametros, DadosLogin);
                            }

                            break;

                        case EDatabaseObjectType.Query:
                            colunasObjeto = Colunas;
                            break;

                        default:
                            throw new ArgumentOutOfRangeException("tipo", "Tipo inválido");
                    }

                    ObjetosSelecionado = tipo == EDatabaseObjectType.Query
                        ? new DatabaseObjectInfo(nomeObjeto, tipo, Parametros, Consulta) {Columns = colunasObjeto}
                        : new DatabaseObjectInfo(nomeObjeto, tipo, Parametros) {Columns = colunasObjeto};
                }

                GridView.CarregaGridViewColunas(gvColunasObjeto, ObjetosSelecionado, IlObjetos);
            }
            catch (Exception ex)
            {
                MessageBox.Show(string.Format("Erro:\n{0}", ex.Message), ex.Source, MessageBoxButtons.OK,
                    MessageBoxIcon.Error);
            }
        }
 private static int RetornaImagem(EDatabaseObjectType tipo)
 {
     switch (tipo)
     {
         case EDatabaseObjectType.Tabela:
             return 0;
         case EDatabaseObjectType.View:
             return 1;
         case EDatabaseObjectType.Procedure:
             return 2;
         case EDatabaseObjectType.Query:
             return 8;
     }
     return 0;
 }