private void btnMapear_Click(object sender, EventArgs e)
        {
            if (!txtConsulta.Text.ContainsInsensitive("select"))
            {
                MessageBox.Show("O comando SQL deve iniciar com SELECT", Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }

            if (_parametros.Count > 0)
            {
                foreach (var parametro in _parametros.Where(parametro => parametro.ParameterValue == null && !parametro.DefineNull))
                {
                    MessageBox.Show(string.Format("Parâmetro {0} não pode ser nulo", parametro.ParameterName), "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }

                try
                {
                    for (var i = 0; i < dgParametros.Rows.Count; i++)
                    {
                        foreach (var parametro in _parametros.Where(parametro => parametro.ParameterName == dgParametros.Rows[i].Cells[0].Value.ToString()))
                        {
                            parametro.ParameterValue = ((bool)dgParametros.Rows[i].Cells[1].Value) ? null : Convert.ChangeType(dgParametros.Rows[i].Cells[3].Value, dgParametros.Rows[i].Cells[3].ValueType);
                            parametro.ParameterDotNetType = ((bool)dgParametros.Rows[i].Cells[1].Value) ? "object" : dgParametros.Rows[i].Cells[3].ValueType.FullName.Replace("System.", "");
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }

            DadosLogin.DataBase = BancoSelecionado;

            List<DadosColunas> colunas;

            try
            {
                colunas = Gerador.MapQuery(txtConsulta.Text.Trim(), _parametros.ToList(), DadosLogin);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, ex.Source, MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            using (var frm = new frmMapeamentoUnitario())
            {
                frm.Gerador = Gerador;
                frm.DadosLogin = DadosLogin;
                frm.BancoSelecionado = BancoSelecionado;
                frm.Parametros = _parametros.ToList();
                frm.IlObjetos = IlObjetos;
                frm.TipoObjeto = TipoObjetoBanco.ETipoObjeto.Query;
                frm.NomeObjeto = "Query";
                frm.Consulta = txtConsulta.Text.Trim();
                frm.Colunas = colunas;
                frm.button1.Enabled = false;
                frm.ShowDialog(this);

                ObjetoSelecionado = frm.ObjetosSelecionado;
            }
            Close();
        }
        private void lvObjetosBanco_MouseClick(object sender, MouseEventArgs e)
        {
            var retorno = lvObjetosBanco.HitTest(e.X, e.Y);

            if (retorno.SubItem != null)
            {
                if (retorno.SubItem.Text == "Tabela" || retorno.SubItem.Text == "View" || retorno.SubItem.Text == "Procedure")
                {
                    using (var frm = new frmMapeamentoUnitario())
                    {
                        frm.Gerador = Gerador;
                        frm.DadosLogin = DadosLogin;
                        frm.BancoSelecionado = BancoSelecionado;
                        frm.Parametros = Parametros;
                        frm.IlObjetos = ilObjetos;
                        frm.NomeObjeto = retorno.Item.Text;
                        frm.TipoObjeto = retorno.SubItem.Text.ConvertToEnum<TipoObjetoBanco.ETipoObjeto>();

                        if (_objetosSelecionados.Exists(o => o.Key.NomeObjeto == retorno.Item.Text))
                        {
                            frm.ObjetosSelecionado = _objetosSelecionados.FirstOrDefault(o => o.Key.NomeObjeto == retorno.Item.Text);
                        }

                        switch (frm.ShowDialog(this))
                        {
                            case DialogResult.Yes:
                                if (!_objetosSelecionados.Exists(o => o.Key.NomeObjeto == frm.ObjetosSelecionado.Key.NomeObjeto))
                                {
                                    _objetosSelecionados.Add(frm.ObjetosSelecionado);
                                    _imgObjetosMapeados.Add(new KeyValuePair<string, Image>(retorno.Item.Text, ilIcones.Images["cheked"]));
                                }
                                else
                                {
                                    _objetosSelecionados = _objetosSelecionados.Where(o => o.Key.NomeObjeto != retorno.Item.Text).ToList();
                                    _objetosSelecionados.Add(frm.ObjetosSelecionado);
                                }
                                break;
                            default:
                                _objetosSelecionados = _objetosSelecionados.Where(o => o.Key.NomeObjeto != retorno.Item.Text).ToList();
                                _imgObjetosMapeados = _imgObjetosMapeados.Where(o => o.Key != retorno.Item.Text).ToList();
                                lvObjetosBanco.Items[retorno.Item.Index].Checked = false;
                                break;
                        }
                    }
                }
            }
        }