/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
- // Copyright (C) 2003-2010 Xtensive LLC.
- // All rights reserved.
- // For conditions of distribution and use, see license.
- // Created by: Alexis Kochetov
- // Created: 2009.05.26
-
- using System;
- using System.Diagnostics;
- using System.Linq.Expressions;
-
- namespace Xtensive.Storage.Linq.Expressions.Visitors
- {
- internal class OwnerRemover : PersistentExpressionVisitor
- {
- public static Expression RemoveOwner(Expression target)
- {
- var remover = new OwnerRemover();
- return remover.Visit(target);
- }
-
- protected override Expression VisitGroupingExpression(GroupingExpression expression)
- {
- return expression;
- }
-
- protected override Expression VisitSubQueryExpression(SubQueryExpression expression)
- {
- return expression;
- }
-
- protected override Expression VisitFieldExpression(FieldExpression expression)
- {
- return expression.RemoveOwner();
- }
-
- protected override Expression VisitStructureFieldExpression(StructureFieldExpression expression)
- {
- return expression.RemoveOwner();
- }
-
- protected override Expression VisitKeyExpression(KeyExpression expression)
- {
- return expression;
- }
-
- protected override Expression VisitEntityExpression(EntityExpression expression)
- {
- return expression;
- }
-
- protected override Expression VisitEntityFieldExpression(EntityFieldExpression expression)
- {
- return expression.RemoveOwner();
- }
-
- protected override Expression VisitEntitySetExpression(EntitySetExpression expression)
- {
- return expression;
- }
-
- protected override Expression VisitColumnExpression(ColumnExpression expression)
- {
- return expression;
- }
- }
- }