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())); } }
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())); } }
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)); }
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; } }
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); } } }
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; } }
public void Process(OptionResultOperator resultOperator, QueryModelVisitor queryModelVisitor, IntermediateHqlTree tree) { tree.AddAdditionalCriteria((q, p) => q.SetOption((string)resultOperator.Option.Value)); }
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)); }
public void Process(TimeoutResultOperator resultOperator, QueryModelVisitor queryModelVisitor, IntermediateHqlTree tree) { tree.AddAdditionalCriteria((q, p) => q.SetTimeout((int)resultOperator.Timeout.Value)); }