protected string ObtenhaValoresInsercao(TEntidade entidade) { string valores = string.Empty; string dado = string.Empty; string tipoBD = string.Empty; bool propriedadeEhLista; bool entreApostrofos; foreach (var propriedade in entidade.GetType().GetProperties()) { if (propriedade.GetValue(entidade, null) == null && !GSUtilitarios.VerifiqueSePropriedadeEhEntidadeRelacionalUmParaMuitos(propriedade)) { valores += "NULL, "; continue; } Type tipoSistema = propriedade.PropertyType; propriedadeEhLista = GSUtilitarios.VerifiqueSeTipoEhLista(propriedade.PropertyType); if (!propriedadeEhLista) { tipoBD = GSUtilitarios.ConvertaTipoDadosAplicacaoBanco(propriedade.GetValue(entidade, null).GetType()); dado = propriedade.GetValue(entidade, null).ToString(); entreApostrofos = (tipoBD != "INT" && tipoBD != "DECIMAL") ? true : false; valores += String.Format("{0}{1}{2}, ", entreApostrofos ? "'" : String.Empty, !tipoSistema.Equals(typeof(Guid)) ? dado : dado.ToUpper(), entreApostrofos ? "'" : String.Empty); } else { if (propriedade.GetValue(entidade, null) == null || (propriedade.GetValue(entidade, null) as IList <dynamic>).Count == 0) { continue; } Type tipoElementos = GSUtilitarios.ObtenhaTipoLista(propriedade.GetValue(entidade, null) as List <dynamic>); Type tipoChaveElementos = GSUtilitarios.EncontrePropriedadeChaveDoTipo(tipoElementos).PropertyType; //Melhorar isso aqui, colocar um Attribute no objetos, que vai dizer quem é o mapeador dele var servicoMapeadorElementosLista = Activator.CreateInstance(null, Namespaces.MAPEADORES_CONCRETOS + ".Mapeador" + tipoElementos.Name).Unwrap() as IDisposable; foreach (var elemento in propriedade.GetValue(entidade, null) as List <dynamic> ) { servicoMapeadorElementosLista.GetType() .GetMethod("Insira", new Type[] { tipoElementos }) .Invoke(servicoMapeadorElementosLista, new object[] { elemento }); } servicoMapeadorElementosLista.Dispose(); } } //Remove a última vírgula valores = valores.Trim(); valores = valores.Remove(valores.Length - 1); return(valores); }
private string ObtenhaStringColunasETiposDadosBD() { string retorno = String.Empty; foreach (var propriedade in Colunas) { retorno += String.Format("{0} {1}{2}{3}", propriedade.Key, GSUtilitarios.ConvertaTipoDadosAplicacaoBanco(propriedade.Value.PropertyType), propriedade.Value.PropertyType.Equals(typeof(string)) ? "(255)" : String.Empty, !propriedade.Equals(Colunas.Last()) ? ", " : String.Empty); } return(retorno); }
protected string ObtenhaValoresModificacao(TEntidade entidade) { List <string> valores = this.Colunas.Keys.ToList(); int auxiliar = 0; string dado = string.Empty; string tipoBD = string.Empty; bool propriedadeEhLista; bool entreApostrofos; foreach (var propriedade in entidade.GetType().GetProperties()) { Type tipoSistema = propriedade.PropertyType; propriedadeEhLista = GSUtilitarios.VerifiqueSeTipoEhLista(tipoSistema); if (!propriedadeEhLista) { tipoBD = GSUtilitarios.ConvertaTipoDadosAplicacaoBanco(propriedade.GetValue(entidade, null).GetType()); dado = propriedade.GetValue(entidade, null).ToString(); entreApostrofos = (tipoBD != "INT" && tipoBD != "DECIMAL") ? true : false; valores[auxiliar] = valores[auxiliar] + String.Format(" = {0}{1}{2}", entreApostrofos ? "'" : String.Empty, dado, entreApostrofos ? "'" : String.Empty); } else { Type tipoElementos = GSUtilitarios.ObtenhaTipoLista(propriedade.GetValue(entidade, null) as List <dynamic>); Type tipoChaveElementos = GSUtilitarios.EncontrePropriedadeChaveDoTipo(tipoElementos).PropertyType; var servicoMapeadorElementosLista = Activator.CreateInstance(null, Namespaces.MAPEADORES_CONCRETOS + ".Mapeador" + tipoElementos.Name).Unwrap() as IDisposable; foreach (var elemento in dado) { servicoMapeadorElementosLista.GetType() .GetMethod("Modifique", new Type[] { tipoElementos }) .Invoke(servicoMapeadorElementosLista, new object[] { elemento }); } servicoMapeadorElementosLista.Dispose(); } auxiliar++; } return(String.Join(", ", valores)); }