Exemple #1
0
        public override HqlTreeNode BuildHql(MethodInfo method, Expression targetObject, ReadOnlyCollection <Expression> arguments, HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor)
        {
            HqlAlias alias = null;

            HqlWhere where = null;

            if (arguments.Count > 1)
            {
                var expr = (LambdaExpression)arguments[1];

                alias = treeBuilder.Alias(expr.Parameters[0].Name);
                where = treeBuilder.Where(visitor.Visit(arguments[1]).AsExpression());
            }

            return(treeBuilder.Exists(
                       treeBuilder.Query(
                           treeBuilder.SelectFrom(
                               treeBuilder.From(
                                   treeBuilder.Range(
                                       visitor.Visit(arguments[0]),
                                       alias)
                                   )
                               ),
                           where)));
        }
Exemple #2
0
        public override HqlTreeNode BuildHql(MethodInfo method, Expression targetObject, ReadOnlyCollection <Expression> arguments, HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor)
        {
            // TODO - alias generator
            HqlAlias alias = treeBuilder.Alias("x");

            ParameterExpression param = Expression.Parameter(targetObject.Type, "x");

            HqlWhere where = treeBuilder.Where(visitor.Visit(Expression.Lambda(
                                                                 Expression.Equal(param, arguments[0]), param))
                                               .AsExpression());

            return(treeBuilder.Exists(
                       treeBuilder.Query(
                           treeBuilder.SelectFrom(
                               treeBuilder.From(
                                   treeBuilder.Range(
                                       visitor.Visit(targetObject),
                                       alias)
                                   )
                               ),
                           where)));
        }