public static string GetHqlExpression(Expression linqExpression, ParameterAggregator parameterAggregator) { var visitor = new HqlGeneratorExpressionTreeVisitor(parameterAggregator); visitor.VisitExpression(linqExpression); return(visitor.GetHqlExpression()); }
public static string GetHqlExpression(Expression linqExpression, ParameterAggregator parameterAggregator) { // 传递需要保存解析参数的容器 var visitor = new HqlGeneratorExpressionTreeVisitor(parameterAggregator); // 执行 Visitor visitor.Visit(linqExpression); // 扩展方法 // 通过 Visitor 过程中保存的临时变量,将其转换成 Hql return(visitor.GetHqlExpression()); }
// 每一个 QueryModel 的执行 // 都通过自定义的 HqlGeneratorExpressionTreeVisitor 来转换 Hql private string GetHqlExpression(Expression expression) { // Hql 语句解析器 // _parameterAggregator 在解析的过程中进行填充 var tp = HqlGeneratorExpressionTreeVisitor.GetHqlExpression(expression, _parameterAggregator); Console.WriteLine($"$GetHqlExpression -> {tp}"); return(tp); }
private string GetHqlExpression(Expression expression) { return(HqlGeneratorExpressionTreeVisitor.GetHqlExpression(expression, _parameterAggregator)); }