public IEnumerable <T> Query <T>(String query, Object parametros) where T : new()
        {
            var iDbCommand  = CriarComando(query);
            var iDataReader = ExecuteReader(iDbCommand);
            var mapa        = Mapeamento.Obter <T>();

            while (iDataReader.Read())
            {
                yield return(mapa.Preencher(new T(), iDataReader));
            }
            iDataReader.Close();
            iDataReader.Dispose();
            iDbCommand.Dispose();
        }
        public T Obter <T, TId>(String query, TId id) where T : new()
        {
            var retorno     = default(T);
            var iDbCommand  = CriarComando(query);
            var iDataReader = ExecuteReader(iDbCommand);

            if (iDataReader.Read())
            {
                var mapa = Mapeamento.Obter <T>();
                retorno = mapa.Preencher(new T(), iDataReader);
                iDataReader.Close();
                iDataReader.Dispose();
            }
            iDbCommand.Dispose();

            return(retorno);
        }
        private static IDbCommand ConfigurarParams(IDbCommand dbCommand, Object param, String querySQL)
        {
            dbCommand.CommandText = querySQL;
            if (param != null)
            {
                var mapa             = Mapeamento.Obter(param.GetType());
                var vMatchCollection = (new Regex("[@][a-zA-Z0-9_]+")).Matches(querySQL);
                //if ((vMatchCollection.Count == 0) && (mapa.Any()))
                //{
                //    foreach (var vNomeParam in mapa)
                //        if (!vNomeParam.Contains("-"))
                //            AdicionarParam(dbCommand, vNomeParam, param, mapa);
                //}
                //else
                {
                    foreach (Match vMatch in vMatchCollection)
                    {
                        AdicionarParam(dbCommand, vMatch.Value, param, mapa);
                    }
                }
            }

            return(dbCommand);
        }