1 using System; 2 using System.Collections.Generic; 3 using System.Data; 4 using System.Data.SqlClient; 5 using System.Linq.Expressions; 6 using System.Linq; 7 using System.Reflection; 8 using System.Text; 9 using System.Data.Linq; 10 11 namespace System.Data.Linq.SqlClient { 12 13 // SQL Client extensions to ExpressionType 14 internal enum InternalExpressionType { 15 Known = 2000, 16 LinkedTable = 2001 17 } 18 19 abstract internal class InternalExpression : Expression { 20 #pragma warning disable 618 // Disable the 'obsolete' warning. InternalExpression(InternalExpressionType nt, Type type)21 internal InternalExpression(InternalExpressionType nt, Type type) 22 : base ((ExpressionType)nt, type) { 23 } 24 #pragma warning restore 618 Known(SqlExpression expr)25 internal static KnownExpression Known(SqlExpression expr) { 26 return new KnownExpression(expr, expr.ClrType); 27 } Known(SqlNode node, Type type)28 internal static KnownExpression Known(SqlNode node, Type type) { 29 return new KnownExpression(node, type); 30 } 31 } 32 33 internal sealed class KnownExpression : InternalExpression { 34 SqlNode node; KnownExpression(SqlNode node, Type type)35 internal KnownExpression(SqlNode node, Type type) 36 : base(InternalExpressionType.Known, type) { 37 this.node = node; 38 } 39 internal SqlNode Node { 40 get { return this.node; } 41 } 42 } 43 44 internal sealed class LinkedTableExpression : InternalExpression { 45 private SqlLink link; 46 private ITable table; LinkedTableExpression(SqlLink link, ITable table, Type type)47 internal LinkedTableExpression(SqlLink link, ITable table, Type type) 48 : base(InternalExpressionType.LinkedTable, type) { 49 this.link = link; 50 this.table = table; 51 } 52 internal SqlLink Link { 53 get {return this.link;} 54 } 55 internal ITable Table { 56 get {return this.table;} 57 } 58 } 59 60 } 61