Exemplo n.º 1
0
        public void Process(SkipResultOperator resultOperator, QueryModelVisitor queryModelVisitor, IntermediateHqlTree tree)
        {
            NamedParameter parameterName;

            if (queryModelVisitor.VisitorParameters.ConstantToParameterMap.TryGetValue(resultOperator.Count as ConstantExpression, out parameterName))
            {
                tree.AddAdditionalCriteria((q, p) => q.SetFirstResult((int)p[parameterName.Name].First));
            }
            else
            {
                tree.AddAdditionalCriteria((q, p) => q.SetFirstResult(resultOperator.GetConstantCount()));
            }
        }
Exemplo n.º 2
0
        public void Process(TakeResultOperator resultOperator, QueryModelVisitor queryModelVisitor, IntermediateHqlTree tree)
        {
            NamedParameter parameterName;

            // TODO - very similar to ProcessSkip, plus want to investigate the scenario in the "else"
            // clause to see if it is valid
            if (queryModelVisitor.VisitorParameters.ConstantToParameterMap.TryGetValue(resultOperator.Count as ConstantExpression, out parameterName))
            {
                tree.AddAdditionalCriteria((q, p) => q.SetMaxResults((int)p[parameterName.Name].First));
            }
            else
            {
                tree.AddAdditionalCriteria((q, p) => q.SetMaxResults(resultOperator.GetConstantCount()));
            }
        }
Exemplo n.º 3
0
        public void Process(FirstResultOperator resultOperator, QueryModelVisitor queryModelVisitor, IntermediateHqlTree tree)
        {
            var firstMethod = resultOperator.ReturnDefaultWhenEmpty
                                  ? ReflectionHelper.GetMethodDefinition(() => Queryable.FirstOrDefault <object>(null))
                                  : ReflectionHelper.GetMethodDefinition(() => Queryable.First <object>(null));

            AddClientSideEval(firstMethod, queryModelVisitor, tree);

            tree.AddAdditionalCriteria((q, p) => q.SetMaxResults(1));
        }
Exemplo n.º 4
0
        public void Process(LockResultOperator resultOperator, QueryModelVisitor queryModelVisitor, IntermediateHqlTree tree)
        {
            var parameters = queryModelVisitor.VisitorParameters;

            switch (resultOperator.ParseInfo.ParsedExpression.Method.Name)
            {
            case "Lock":
                NamedParameter parameterName;
                queryModelVisitor.VisitorParameters.ConstantToParameterMap.TryGetValue(resultOperator.Data,
                                                                                       out parameterName);
                if (parameterName != null)
                {
                    tree.AddAdditionalCriteria((q, p) => q.SetLockMode(null, (LockMode)p[parameterName.Name].Item1));
                }
                else
                {
                    tree.AddAdditionalCriteria((q, p) => q.SetLockMode(null, (LockMode)resultOperator.Data.Value));
                }
                break;
            }
        }
Exemplo n.º 5
0
        public void Process(OptionsResultOperator resultOperator, QueryModelVisitor queryModelVisitor, IntermediateHqlTree tree)
        {
            queryModelVisitor.VisitorParameters.ConstantToParameterMap.TryGetValue(resultOperator.SetOptions,
                                                                                   out NamedParameter parameterName);

            if (parameterName != null)
            {
                tree.AddAdditionalCriteria(
                    (q, p) => setOptions(q, (Action <IQueryableOptions>)p[parameterName.Name].Item1));
            }
            else
            {
                tree.AddAdditionalCriteria(
                    (q, p) => setOptions(q, (Action <IQueryableOptions>)resultOperator.SetOptions.Value));
            }

            void setOptions(IQuery query, Action <IQueryableOptions> set)
            {
                var options = new NhQueryableOptions();

                set(options);

                if (options.Timeout.HasValue)
                {
                    query.SetTimeout(options.Timeout.Value);
                }
                if (options.Cacheable.HasValue)
                {
                    query.SetCacheable(options.Cacheable.Value);
                }
                if (options.CacheMode.HasValue)
                {
                    query.SetCacheMode(options.CacheMode.Value);
                }
                if (options.CacheRegion != null)
                {
                    query.SetCacheRegion(options.CacheRegion);
                }
            }
        }
Exemplo n.º 6
0
        public void Process(CacheableResultOperator resultOperator, QueryModelVisitor queryModelVisitor, IntermediateHqlTree tree)
        {
            NamedParameter parameterName;

            switch (resultOperator.ParseInfo.ParsedExpression.Method.Name)
            {
            case "Cacheable":
                tree.AddAdditionalCriteria((q, p) => q.SetCacheable(true));
                break;

            case "CacheMode":
                queryModelVisitor.VisitorParameters.ConstantToParameterMap.TryGetValue(resultOperator.Data,
                                                                                       out parameterName);
                if (parameterName != null)
                {
                    tree.AddAdditionalCriteria((q, p) => q.SetCacheMode((CacheMode)p[parameterName.Name].First));
                }
                else
                {
                    tree.AddAdditionalCriteria((q, p) => q.SetCacheMode((CacheMode)resultOperator.Data.Value));
                }
                break;

            case "CacheRegion":
                queryModelVisitor.VisitorParameters.ConstantToParameterMap.TryGetValue(resultOperator.Data,
                                                                                       out parameterName);
                if (parameterName != null)
                {
                    tree.AddAdditionalCriteria((q, p) => q.SetCacheRegion((string)p[parameterName.Name].First));
                }
                else
                {
                    tree.AddAdditionalCriteria((q, p) => q.SetCacheRegion((string)resultOperator.Data.Value));
                }
                break;
            }
        }
Exemplo n.º 7
0
 public void Process(OptionResultOperator resultOperator, QueryModelVisitor queryModelVisitor, IntermediateHqlTree tree)
 {
     tree.AddAdditionalCriteria((q, p) => q.SetOption((string)resultOperator.Option.Value));
 }
Exemplo n.º 8
0
        public void Process(LockResultOperator resultOperator, QueryModelVisitor queryModelVisitor, IntermediateHqlTree tree)
        {
            var alias = queryModelVisitor.VisitorParameters.QuerySourceNamer.GetName(resultOperator.QuerySource);

            tree.AddAdditionalCriteria((q, p) => q.SetLockMode(alias, (LockMode)resultOperator.LockMode.Value));
        }
Exemplo n.º 9
0
 public void Process(TimeoutResultOperator resultOperator, QueryModelVisitor queryModelVisitor, IntermediateHqlTree tree)
 {
     tree.AddAdditionalCriteria((q, p) => q.SetTimeout((int)resultOperator.Timeout.Value));
 }