/// <summary> /// 重写横向交叉连接 /// </summary> /// <param name="crossJoinLateralExpression">交叉表达式</param> /// <returns></returns> public override Expression VisitCrossJoinLateral(CrossJoinLateralExpression crossJoinLateralExpression) { try { if (Check.IsTraceEnabled(m_oracleLogger?.Logger)) { Trace<DbLoggerCategory.Query>.Write(m_oracleLogger, LogLevel.Trace, OracleTraceTag.Entry, OracleTraceClassName.OracleQuerySqlGenerator, OracleTraceFuncName.VisitCrossJoinLateral); } Check.NotNull(crossJoinLateralExpression, nameof(crossJoinLateralExpression)); Sql.Append("CROSS APPLY "); Visit(crossJoinLateralExpression.TableExpression); return crossJoinLateralExpression; } catch (Exception ex) { if (Check.IsErrorEnabled(m_oracleLogger?.Logger)) { Trace<DbLoggerCategory.Query>.Write(m_oracleLogger, LogLevel.Error, OracleTraceTag.Error, OracleTraceClassName.OracleQuerySqlGenerator, OracleTraceFuncName.VisitCrossJoinLateral, ex.ToString()); } throw; } finally { if (Check.IsTraceEnabled(m_oracleLogger?.Logger)) { Trace<DbLoggerCategory.Query>.Write(m_oracleLogger, LogLevel.Trace, OracleTraceTag.Exit, OracleTraceClassName.OracleQuerySqlGenerator, OracleTraceFuncName.VisitCrossJoinLateral); } } }
/// <summary> /// This API supports the Entity Framework Core infrastructure and is not intended to be used /// directly from your code. This API may change or be removed in future releases. /// </summary> public override Expression VisitCrossJoinLateral(CrossJoinLateralExpression crossJoinLateralExpression) { Check.NotNull(crossJoinLateralExpression, nameof(crossJoinLateralExpression)); Sql.Append("CROSS APPLY "); Visit(crossJoinLateralExpression.TableExpression); return(crossJoinLateralExpression); }