コード例 #1
0
		/// <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);
				}
			}
		}
コード例 #2
0
        /// <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);
        }