/Xtensive.Storage/Xtensive.Storage/Linq/Expressions/Visitors/OwnerRemover.cs

https://code.google.com/p/dataobjectsdotnet/ · C# · 66 lines · 50 code · 11 blank · 5 comment · 0 complexity · 75685dafa31db7c42e7da9686f6ca81e MD5 · raw file

  1. // Copyright (C) 2003-2010 Xtensive LLC.
  2. // All rights reserved.
  3. // For conditions of distribution and use, see license.
  4. // Created by: Alexis Kochetov
  5. // Created: 2009.05.26
  6. using System;
  7. using System.Diagnostics;
  8. using System.Linq.Expressions;
  9. namespace Xtensive.Storage.Linq.Expressions.Visitors
  10. {
  11. internal class OwnerRemover : PersistentExpressionVisitor
  12. {
  13. public static Expression RemoveOwner(Expression target)
  14. {
  15. var remover = new OwnerRemover();
  16. return remover.Visit(target);
  17. }
  18. protected override Expression VisitGroupingExpression(GroupingExpression expression)
  19. {
  20. return expression;
  21. }
  22. protected override Expression VisitSubQueryExpression(SubQueryExpression expression)
  23. {
  24. return expression;
  25. }
  26. protected override Expression VisitFieldExpression(FieldExpression expression)
  27. {
  28. return expression.RemoveOwner();
  29. }
  30. protected override Expression VisitStructureFieldExpression(StructureFieldExpression expression)
  31. {
  32. return expression.RemoveOwner();
  33. }
  34. protected override Expression VisitKeyExpression(KeyExpression expression)
  35. {
  36. return expression;
  37. }
  38. protected override Expression VisitEntityExpression(EntityExpression expression)
  39. {
  40. return expression;
  41. }
  42. protected override Expression VisitEntityFieldExpression(EntityFieldExpression expression)
  43. {
  44. return expression.RemoveOwner();
  45. }
  46. protected override Expression VisitEntitySetExpression(EntitySetExpression expression)
  47. {
  48. return expression;
  49. }
  50. protected override Expression VisitColumnExpression(ColumnExpression expression)
  51. {
  52. return expression;
  53. }
  54. }
  55. }