Exemple #1
0
        /// <summary>
        /// Obtiene una implementación de una consulta que puede cambiar según la base de datos.
        /// </summary>
        /// <remarks>
        ///     Registro de versiones:
        ///
        ///         1.0 07/08/2015 Marcos Abraham Hernández Bravo (Ada Ltda.): versión inicial.
        /// </remarks>
        /// <param name="clase">Clase mediante reflexión, que contiene el método que desea acceder a la base de datos.</param>
        /// <param name="nombre">Nombre de la consulta en el archivo de configuración.</param>
        public DynamicQuery CrearQueryDinamica(Type clase, string nombre)
        {
            QueryTag consulta = DynamicQueryManager.ObtenerConsulta(nombre, conexion.Type, clase);

            Query aux = null;

            if (consulta.Tipo == "StoreProcedure")
            {
                aux = CrearProcedimientoAlmacenado();
            }
            else if (consulta.Tipo == "Query")
            {
                aux = CrearQuery();
            }
            else
            {
                throw new PreparacionException(string.Format("¡El tipo de consulta {0} no es válida!", consulta.Tipo));
            }

            DynamicQuery retorno = new DynamicQuery(this, aux.Mapeador, aux.CreadorQuery);

            retorno.TipoBaseDatos = conexion.Type;
            retorno.Nombre        = nombre;
            retorno.Tipo          = consulta.Tipo;
            retorno.Consulta      = consulta.Consulta;
            return(retorno);
        }