本文整理汇总了C#中IHqlExpressionVisitor类的典型用法代码示例。如果您正苦于以下问题:C# IHqlExpressionVisitor类的具体用法?C# IHqlExpressionVisitor怎么用?C# IHqlExpressionVisitor使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
IHqlExpressionVisitor类属于命名空间,在下文中一共展示了IHqlExpressionVisitor类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: BuildHql
public HqlTreeNode BuildHql(MethodInfo method, Expression targetObject, ReadOnlyCollection<Expression> arguments,
HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor)
{
return treeBuilder.Like(
visitor.Visit(arguments[0]).AsExpression(),
visitor.Visit(arguments[1]).AsExpression());
}
示例2: BuildHql
public override HqlTreeNode BuildHql(MethodInfo method, Expression targetObject, ReadOnlyCollection<Expression> arguments, HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor)
{
HqlExpression targetExpression = visitor.Visit(targetObject).AsExpression();
HqlExpression argument0Expression = visitor.Visit(arguments[0]).AsExpression();
HqlEquality result = treeBuilder.Equality(targetExpression, argument0Expression);
return result;
}
示例3: BuildHql
public override HqlTreeNode BuildHql(
MethodInfo method,
Expression targetObject,
ReadOnlyCollection<Expression> arguments,
HqlTreeBuilder treeBuilder,
IHqlExpressionVisitor visitor)
{
// Get the StringComparison argument.
var comparison = (StringComparison)(arguments[1].As<ConstantExpression>().Value);
if (comparison == StringComparison.CurrentCultureIgnoreCase
|| comparison == StringComparison.InvariantCultureIgnoreCase
|| comparison == StringComparison.OrdinalIgnoreCase)
{
// If the comparison calls for us to ignore the case, use SQL LOWER()
return
treeBuilder.Equality(
treeBuilder.MethodCall("lower", new[] { visitor.Visit(targetObject).AsExpression() }),
treeBuilder.MethodCall("lower", new[] { visitor.Visit(arguments[0]).AsExpression() }));
}
// Otherwise use the database's default string comparison mechanism.
return treeBuilder.Equality(
visitor.Visit(targetObject).AsExpression(),
visitor.Visit(arguments[0]).AsExpression());
}
示例4: BuildHql
public override HqlTreeNode BuildHql(MethodInfo method, Expression targetObject, ReadOnlyCollection<Expression> arguments, HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor)
{
IEnumerable<HqlExpression> args = visitor.Visit(targetObject)
.Union(arguments.Select(a => visitor.Visit(a)))
.Cast<HqlExpression>();
return treeBuilder.MethodCall(_name, args);
}
示例5: BuildHql
public override HqlTreeNode BuildHql(MethodInfo method, Expression targetObject, ReadOnlyCollection<Expression> arguments, HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor)
{
return treeBuilder.Like(
visitor.Visit(targetObject).AsExpression(),
treeBuilder.Concat(
treeBuilder.Constant("%"),
visitor.Visit(arguments[0]).AsExpression()));
}
示例6: GetRhs
private static HqlExpression GetRhs(MethodInfo method, ReadOnlyCollection<Expression> arguments, HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor)
{
if (arguments.Count > 0)
return visitor.Visit(arguments[0]).AsExpression();
var returnType = method.ReturnType;
var instance = returnType.IsValueType ? Activator.CreateInstance(returnType) : null;
return treeBuilder.Constant(instance);
}
示例7: BuildHql
public override HqlTreeNode BuildHql(MethodInfo method, Expression targetObject,
ReadOnlyCollection<Expression> arguments, HqlTreeBuilder treeBuilder,
IHqlExpressionVisitor visitor)
{
IEnumerable<HqlExpression> args = arguments.Select(a => visitor.Visit(a))
.Cast<HqlExpression>();
return treeBuilder.BooleanMethodCall("FREETEXT", args);
}
示例8: BuildHql
public override HqlTreeNode BuildHql(MethodInfo method, Expression targetObject, ReadOnlyCollection<Expression> arguments, HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor)
{
Expression lhs = arguments.Count == 1 ? targetObject : arguments[0];
Expression rhs = arguments.Count == 1 ? arguments[0] : arguments[1];
return treeBuilder.Equality(
visitor.Visit(lhs).AsExpression(),
visitor.Visit(rhs).AsExpression());
}
示例9: BuildHql
public override HqlTreeNode BuildHql(MethodInfo method, Expression targetObject,
ReadOnlyCollection<Expression> arguments, HqlTreeBuilder treeBuilder,
IHqlExpressionVisitor visitor)
{
var arg = visitor.Visit(arguments[0]).AsExpression();
var mt = treeBuilder.MethodCall("hid_Parse", arg);
return mt;
}
示例10: BuildHql
public override HqlTreeNode BuildHql(MethodInfo method, Expression targetObject, ReadOnlyCollection<Expression> arguments, HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor)
{
// HqlGeneratorExpressionTreeVisitor.VisitConstantExpression will always return an HqlEquality
// instead of HqlParameter for argument that is of type bool.
// Use the HqlParameter that exists as first children to the HqlEquality as second argument into treeBuilder.Equality
return treeBuilder.Equality(
visitor.Visit(targetObject).AsExpression(),
visitor.Visit(arguments[0]).Children.First().AsExpression());
}
示例11: BuildHql
public override HqlTreeNode BuildHql(MethodInfo method, Expression targetObject,
ReadOnlyCollection<Expression> arguments, HqlTreeBuilder treeBuilder,
IHqlExpressionVisitor visitor)
{
var arg = visitor.Visit(arguments[0]).AsExpression();
var parent = visitor.Visit(arguments[1]).AsExpression();
var mt = treeBuilder.BooleanMethodCall("hid_IsDescendantOf", new[] {arg, parent});
return mt;
}
示例12: BuildHql
public override HqlTreeNode BuildHql(MethodInfo method, Expression targetObject, ReadOnlyCollection<Expression> arguments, HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor)
{
return treeBuilder.Concat(
new[]
{
visitor.Visit(arguments[0]).AsExpression(),
visitor.Visit(arguments[1]).AsExpression(),
visitor.Visit(arguments[2]).AsExpression()
});
}
示例13: BuildHql
public override HqlTreeNode BuildHql(MethodInfo method, Expression targetObject, ReadOnlyCollection<Expression> arguments, HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor)
{
var arg = visitor.Visit(arguments[0]).AsExpression();
var c1 = visitor.Visit(arguments[1]).AsExpression();
var c2 = visitor.Visit(arguments[2]).AsExpression();
var mt = treeBuilder.MethodCall("hid_GetReparentedValue", arg, c1, c2);
return mt;
}
示例14: BuildHql
public override HqlTreeNode BuildHql(MethodInfo method, Expression expression, ReadOnlyCollection<Expression> arguments, HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor)
{
string function = method.Name.ToLowerInvariant();
HqlExpression firstArgument = visitor.Visit(arguments[0]).AsExpression();
if (arguments.Count == 2)
{
return treeBuilder.MethodCall(function, firstArgument, visitor.Visit(arguments[1]).AsExpression());
}
return treeBuilder.MethodCall(function, firstArgument);
}
示例15: BuildHql
public override HqlTreeNode BuildHql(MethodInfo method, Expression targetObject, ReadOnlyCollection<Expression> arguments, HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor)
{
string leadingOrTrailing = "TRAILING";
if (method.Name == "TrimLeading")
leadingOrTrailing = "LEADING";
return treeBuilder.MethodCall("Trim",
treeBuilder.Ident(leadingOrTrailing),
visitor.Visit(arguments[1]).AsExpression(),
treeBuilder.Ident("FROM"),
visitor.Visit(arguments[0]).AsExpression());
}