/// <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, TipoObjetoBanco.ETipoObjeto tipo)
        {
            try
            {
                if (ObjetosSelecionado.Key == null)
                {
                    var colunasObjeto = new List<DadosColunas>();

                    switch (tipo)
                    {
                        case TipoObjetoBanco.ETipoObjeto.Tabela:
                            colunasObjeto = Gerador.MapeamentoTabela.ListAllFieldsFromTable(BancoSelecionado, nomeObjeto, DadosLogin);
                            break;

                        case TipoObjetoBanco.ETipoObjeto.View:
                            colunasObjeto = Gerador.MapeamentoView.ListAllFieldsFromViews(BancoSelecionado, nomeObjeto, DadosLogin);
                            break;

                        case TipoObjetoBanco.ETipoObjeto.Procedure:
                            Parametros = Gerador.MapeamentoProcedure.ListaAllStoredProceduresParameters(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.MapeamentoProcedure.ListAllFieldsFromStoredProcedure(BancoSelecionado, nomeObjeto, Parametros, DadosLogin);
                            }

                            break;

                        case TipoObjetoBanco.ETipoObjeto.Query:
                            colunasObjeto = Colunas;
                            break;

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

                    ObjetosSelecionado = tipo == TipoObjetoBanco.ETipoObjeto.Query ?
                        new KeyValuePair<TipoObjetoBanco, List<DadosColunas>>(new TipoObjetoBanco(nomeObjeto, tipo.ToString(), Parametros, Consulta), colunasObjeto)
                        : new KeyValuePair<TipoObjetoBanco, List<DadosColunas>>(new TipoObjetoBanco(nomeObjeto, tipo.ToString(), Parametros), 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 void lvObjetosBanco_ItemCheck(object sender, ItemCheckEventArgs e)
        {
            if (lvObjetosBanco.Items[e.Index].Group == lvObjetosBanco.Groups["procedure"] && e.NewValue == CheckState.Checked)
            {
                var nomesTiposObjeto = new TipoObjetoBanco(lvObjetosBanco.Items[e.Index].Text, lvObjetosBanco.Items[e.Index].SubItems[4].Text, new List<DadosStoredProceduresParameters>());

                Parametros = Gerador.MapeamentoProcedure.ListaAllStoredProceduresParameters(BancoSelecionado, DadosLogin, lvObjetosBanco.Items[e.Index].Text);

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

                    if (frm.ShowDialog(this) == DialogResult.Yes)
                    {
                        nomesTiposObjeto.Parametros = frm.Parametros;
                    }
                    else
                    {
                        MessageBox.Show("Não é possivel carregar os dadso da StoredProcedure sem o preenchimento dos parametros", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        e.NewValue = CheckState.Unchecked;
                        return;
                    }
                    frm.Dispose();
                }
                _imgObjetosMapeados.Add(new KeyValuePair<string, Image>(lvObjetosBanco.Items[e.Index].Text, ilIcones.Images["cheked"]));
                _objetosSelecionados.Add(new KeyValuePair<TipoObjetoBanco, List<DadosColunas>>(nomesTiposObjeto, CarregaCamposObjeto(nomesTiposObjeto.NomeObjeto, nomesTiposObjeto.TipoObjeto, true)));
            }

            if (e.NewValue == CheckState.Unchecked)
            {
                _objetosSelecionados = _objetosSelecionados.Where(o => o.Key.NomeObjeto != lvObjetosBanco.Items[e.Index].Text).ToList();
                _imgObjetosMapeados = _imgObjetosMapeados.Where(o => o.Key != lvObjetosBanco.Items[e.Index].Text).ToList();
            }
        }