/// <summary>
        /// Metodo para buscar um associado. Recebe como parametro o id do associado no formato string. Retorna um objeto Associados.
        /// </summary>
        /// <param name="pIdAssociado">String idAssociado.</param>
        /// <returns>Objeto Associados.</returns>
        public static Associados GetOne(string pIdAssociado)
        {
            StringBuilder sql = new StringBuilder();
            MySqlCommand  cmm = new MySqlCommand();

            cmm.Parameters.AddWithValue("@idAssociado", pIdAssociado);

            sql.Append("SELECT * ");
            sql.Append("FROM Associados A inner join Pessoas P ON A.idPessoa = P.idPessoa ");
            sql.Append(" WHERE idAssociado = @idAssociado");

            cmm.CommandText = sql.ToString();

            DataTable dt = MySQL.MySQL.MySQL.getDataTable(cmm);

            foreach (DataRow row in dt.Rows)
            {
                associado = new Associados
                {
                    idAssociado        = Convert.ToInt32(row["idAssociado"]),
                    idPessoa           = Convert.ToInt32(row["idPessoa"]),
                    nome               = (string)row["nome"],
                    nacionalidade      = (string)row["nacionalidade"],
                    naturalidade       = (string)row["naturalidade"],
                    estadoNaturalidade = (string)row["estadoNaturalidade"],
                    dataNascimento     = (DateTime)row["dataNascimento"],
                    estadoCivil        = (string)row["estadoCivil"],
                    cpf             = (string)row["cpf"],
                    rg              = (string)row["rg"],
                    tituloDeEleitor = row.IsNull("tituloDeEleitor") ? "" : (string)row["tituloDeEleitor"],
                    zona            = row.IsNull("zona") ? "" : (string)row["zona"],
                    secao           = row.IsNull("secao") ? "" : (string)row["secao"],
                    endereco        = (string)row["endereco"],
                    numero          = (string)row["numero"],
                    bairro          = (string)row["bairro"],
                    cidade          = (string)row["cidade"],
                    estado          = (string)row["estado"],
                    cep             = (string)row["cep"],
                    sexo            = Convert.ToChar(row["sexo"]),
                    observacoes     = row.IsNull("observacoes") ? "" : (string)row["observacoes"],
                    tipoResidencia  = (string)row["tipoResidencia"],
                    email           = row.IsNull("email") ? "" : (string)row["email"],
                    religiao        = ReligioesRepositorio.GetOne(Convert.ToInt32(row["idPessoa"])),
                    telefones       = TelefonesRepositorio.Get(Convert.ToInt32(row["idPessoa"])),
                    dependentes     = DependentesRepositorio.Get(Convert.ToInt32(row["idAssociado"]))
                };
            }

            dt.Dispose();

            Associados associadoTratado = AssociadosUtil.ToFirstUpper(associado);

            return(associadoTratado);
        }
        /// <summary>
        /// Metodo para deletar um Associado. Recebe como parametro um objeto do tipo Associados.
        /// </summary>
        /// <param name="pAssociado">Objeto Associados.</param>
        public static void Delete(Associados pAssociado)
        {
            MySqlCommand cmm = new MySqlCommand();

            cmm.Parameters.AddWithValue("@idAssociado", pAssociado.idAssociado);
            cmm.Parameters.AddWithValue("@idPessoa", pAssociado.idPessoa);

            StringBuilder sql = new StringBuilder();

            sql.Append("CALL deleteAssociado(@idPessoa, @idAssociado)");
            cmm.CommandText = sql.ToString();

            if (pAssociado.dependentes != null)
            {
                foreach (Dependentes dependente in pAssociado.dependentes)
                {
                    DependentesRepositorio.Delete(dependente);
                }
            }

            MySQL.MySQL.MySQL.ExecuteQuery(cmm);
        }