Ejemplo n.º 1
0
        protected Dictionary <String, DbParameter> criarParamatros(IEntidade entidade)
        {
            Type tipo = entidade.GetType();

            Dictionary <String, DbParameter> param = new Dictionary <String, DbParameter>();
            Dictionary <String, Type>        tipos = entidade.obterTiposMapeado();

            foreach (String k in tipos.Keys)
            {
                PropertyInfo p = tipo.GetProperty(k, new Type[] { });
                if (p == null || p.GetCustomAttributes(typeof(Transiente), true).Length > 0)
                {
                    continue;
                }



                if (p.GetValue(entidade, null) == null)
                {
                    param.Add(k, ad.criaParametro(k, ConverteUtils.converteParaDbType(tipos[k]), DBNull.Value));
                }
                else if (tipos[k].IsEnum)
                {
                    param.Add(k, ad.criaParametro(k, DbType.Int32, (int)p.GetValue(entidade, null)));
                }
                else if (tipos[k].IsSubclassOf(typeof(AbstractEntidade)))
                {//Se for uma entidade: 1-obtem seu mapeamento de chaves, 2-Pega a primeira chave e passa para o mapeamento
                    IEntidade tmp = (IEntidade)p.GetValue(entidade);
                    Dictionary <string, Type> chv = tmp.obterTiposMapeadoChave();
                    String priChv = chv.Keys.First();
                    param.Add(k, ad.criaParametro(k, ConverteUtils.converteParaDbType(chv[priChv]), tmp[priChv]));
                }
                else if (tipos[k] == typeof(TimeSpan))
                {
                    TimeSpan ts = (TimeSpan)p.GetValue(entidade, null);
                    //DateTime data = new DateTime(1981, 1, 30, ts.Hours, ts.Minutes, ts.Seconds);
                    param.Add(k, ad.criaParametro(k, ConverteUtils.converteParaDbType(tipos[k]), ts));
                }
                else
                {
                    param.Add(k, ad.criaParametro(k, ConverteUtils.converteParaDbType(tipos[k]), p.GetValue(entidade, null)));
                }
            }

            return(param);
        }
Ejemplo n.º 2
0
        public virtual void excluir(E entidade)
        {
            Type tipo = typeof(E);

            List <DbParameter>        param = new List <DbParameter>();
            Dictionary <String, Type> tipos = entidade.obterTiposMapeadoChave();

            foreach (String k in tipos.Keys)
            {
                param.Add(ad.criaParametro(k, ConverteUtils.converteParaDbType(tipos[k]), tipo.GetProperty(k, new Type[] { }).GetValue(entidade, null)));
            }

            bool controleInterno = ad.conexaoFechada();

            if (controleInterno)
            {
                ad.abreConexao();
            }

            StringBuilder sql = new StringBuilder("Delete from ");

            sql.Append(obterTabela());
            sql.Append(entidade.whereComChave());

            try
            {
                ad.executaComando(sql.ToString(), param.ToArray());
            }
            catch (Exception ex)
            {
                String msg = String.Format("Falha ao tentar excluir registro no banco de dados.\n{0}", ex.Message);
                if (ex.Message.IndexOf("FK_") > -1)
                {
                    msg = String.Format("Falha de integridade referencia na tentativa de excluir o registro, possívelmente ele já esta em uso pelo sistema.\n{0}", ex.Message);
                }
                throw new Exception(msg, ex);
            }

            if (controleInterno)
            {
                ad.fechaConexao();
            }
        }
Ejemplo n.º 3
0
        public virtual E obter(E chave)
        {
            bool controleInterno = ad.conexaoFechada();

            if (controleInterno)
            {
                ad.abreConexao();
            }

            List <DbParameter>        param = new List <DbParameter>();
            Dictionary <String, Type> tipos = chave.obterTiposMapeadoChave();

            foreach (String k in tipos.Keys)
            {
                param.Add(ad.criaParametro(k, ConverteUtils.converteParaDbType(tipos[k]), typeof(E).GetProperty(k, new Type[] { }).GetValue(chave, null)));
            }

            StringBuilder sql = new StringBuilder("Select * from ");

            sql.Append(obterTabela());
            sql.Append(chave.whereComChave());

            E           entidade = null;
            IDataReader dr       = ad.retornaDR(sql.ToString(), param.ToArray());

            if (dr.Read())
            {
                entidade = (E)typeof(E).GetConstructors()[0].Invoke(null);
                entidade.deReader(dr);
            }
            dr.Close();

            if (controleInterno)
            {
                ad.fechaConexao();
            }

            return(entidade);
        }
Ejemplo n.º 4
0
        public AcessaDadosConstrutor adicionaSqlComParametro(ISqlConstrutor sqlConstrutor, String propriedade, object valorParametro)
        {
            DbType tipoParam = ConverteUtils.converteParaDbType(valorParametro.GetType());

            return(adicionaSqlComParametro(sqlConstrutor, propriedade, tipoParam, valorParametro));
        }
Ejemplo n.º 5
0
 public AcessaDadosConstrutor adicionaParametro(string nomeParametro, object valorParametro)
 {
     return(adicionaParametro(nomeParametro, ConverteUtils.converteParaDbType(valorParametro.GetType()), valorParametro));
 }