コード例 #1
0
ファイル: SqlResolver.cs プロジェクト: zyj0021/ALinq
            internal override SqlExpression VisitColumnRef(SqlColumnRef cref)
            {
                SqlColumnRef ref2 = this.BubbleUp(cref);

                if (ref2 == null)
                {
                    throw Error.ColumnReferencedIsNotInScope(SqlResolver.GetColumnName(cref.Column));
                }
                return(ref2);
            }
コード例 #2
0
ファイル: SqlResolver.cs プロジェクト: zyj0021/ALinq
 internal override SqlExpression VisitTableValuedFunctionCall(SqlTableValuedFunctionCall fc)
 {
     foreach (SqlColumn column in fc.Columns)
     {
         if (column == this.match)
         {
             if (this.found != null)
             {
                 throw Error.ColumnIsDefinedInMultiplePlaces(SqlResolver.GetColumnName(this.match));
             }
             this.found = column;
             return(fc);
         }
     }
     return(fc);
 }
コード例 #3
0
ファイル: SqlResolver.cs プロジェクト: zyj0021/ALinq
 internal override SqlTable VisitTable(SqlTable tab)
 {
     foreach (SqlColumn column in tab.Columns)
     {
         if (column == this.match)
         {
             if (this.found != null)
             {
                 throw Error.ColumnIsDefinedInMultiplePlaces(SqlResolver.GetColumnName(this.match));
             }
             this.found = column;
             return(tab);
         }
     }
     return(tab);
 }
コード例 #4
0
ファイル: SqlResolver.cs プロジェクト: zyj0021/ALinq
 internal override SqlRow VisitRow(SqlRow row)
 {
     foreach (SqlColumn column in row.Columns)
     {
         if (RefersToColumn(column, this.match))
         {
             if (this.found != null)
             {
                 throw Error.ColumnIsDefinedInMultiplePlaces(SqlResolver.GetColumnName(this.match));
             }
             this.found = column;
             return(row);
         }
     }
     return(row);
 }
コード例 #5
0
ファイル: SqlResolver.cs プロジェクト: zyj0021/ALinq
 internal override SqlSelect VisitSelect(SqlSelect select)
 {
     this.Visit(select.Row);
     if (this.found == null)
     {
         this.Visit(select.From);
         if (this.found == null)
         {
             return(select);
         }
         if (select.IsDistinct && !this.match.IsConstantColumn)
         {
             throw Error.ColumnIsNotAccessibleThroughDistinct(SqlResolver.GetColumnName(this.match));
         }
         if ((select.GroupBy.Count != 0) && !this.IsFoundInGroup(select))
         {
             throw Error.ColumnIsNotAccessibleThroughGroupBy(SqlResolver.GetColumnName(this.match));
         }
         this.ForceLocal(select.Row, this.found.Name);
     }
     return(select);
 }