PageRenderTime 36ms CodeModel.GetById 11ms RepoModel.GetById 0ms app.codeStats 0ms

/mcs/class/referencesource/System.Data.Linq/SqlClient/Common/Expressions.cs

http://github.com/mono/mono
C# | 60 lines | 53 code | 6 blank | 1 comment | 0 complexity | e8730387f7d475b094df6502dacbeb0e MD5 | raw file
Possible License(s): GPL-2.0, CC-BY-SA-3.0, LGPL-2.0, MPL-2.0-no-copyleft-exception, LGPL-2.1, Unlicense, Apache-2.0
  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. namespace System.Data.Linq.SqlClient {
  11. // SQL Client extensions to ExpressionType
  12. internal enum InternalExpressionType {
  13. Known = 2000,
  14. LinkedTable = 2001
  15. }
  16. abstract internal class InternalExpression : Expression {
  17. #pragma warning disable 618 // Disable the 'obsolete' warning.
  18. internal InternalExpression(InternalExpressionType nt, Type type)
  19. : base ((ExpressionType)nt, type) {
  20. }
  21. #pragma warning restore 618
  22. internal static KnownExpression Known(SqlExpression expr) {
  23. return new KnownExpression(expr, expr.ClrType);
  24. }
  25. internal static KnownExpression Known(SqlNode node, Type type) {
  26. return new KnownExpression(node, type);
  27. }
  28. }
  29. internal sealed class KnownExpression : InternalExpression {
  30. SqlNode node;
  31. internal KnownExpression(SqlNode node, Type type)
  32. : base(InternalExpressionType.Known, type) {
  33. this.node = node;
  34. }
  35. internal SqlNode Node {
  36. get { return this.node; }
  37. }
  38. }
  39. internal sealed class LinkedTableExpression : InternalExpression {
  40. private SqlLink link;
  41. private ITable table;
  42. internal LinkedTableExpression(SqlLink link, ITable table, Type type)
  43. : base(InternalExpressionType.LinkedTable, type) {
  44. this.link = link;
  45. this.table = table;
  46. }
  47. internal SqlLink Link {
  48. get {return this.link;}
  49. }
  50. internal ITable Table {
  51. get {return this.table;}
  52. }
  53. }
  54. }