Пример #1
0
        /// <summary>
        /// Applies the minimal transformations required before parametrization,
        /// expression key computing and parsing.
        /// </summary>
        /// <param name="expression">The expression to transform.</param>
        /// <param name="sessionFactory">The session factory.</param>
        /// <returns>The transformed expression.</returns>
        public static Expression PreTransform(Expression expression, ISessionFactoryImplementor sessionFactory)
        {
            var partiallyEvaluatedExpression =
                NhPartialEvaluatingExpressionVisitor.EvaluateIndependentSubtrees(expression, sessionFactory);

            return(PreProcessor.Process(partiallyEvaluatedExpression));
        }
Пример #2
0
        /// <summary>
        /// Applies the minimal transformations required before parametrization,
        /// expression key computing and parsing.
        /// </summary>
        /// <param name="expression">The expression to transform.</param>
        /// <param name="parameters">The parameters used in the transformation process.</param>
        /// <returns><see cref="PreTransformationResult"/> that contains the transformed expression.</returns>
        public static PreTransformationResult PreTransform(Expression expression, PreTransformationParameters parameters)
        {
            parameters.EvaluatableExpressionFilter = new NhEvaluatableExpressionFilter(parameters.SessionFactory);
            parameters.QueryVariables = new Dictionary <ConstantExpression, QueryVariable>();

            var partiallyEvaluatedExpression = NhPartialEvaluatingExpressionVisitor
                                               .EvaluateIndependentSubtrees(expression, parameters);

            return(new PreTransformationResult(
                       PreProcessor.Process(partiallyEvaluatedExpression),
                       parameters.SessionFactory,
                       parameters.QueryVariables));
        }