public override void Visit(DbElementExpression expression) { Write(expression); _depth++; Write("Argument", expression.Argument); _depth--; }
public override SqlFragment Visit(DbElementExpression expression) { SelectStatement s = VisitInputExpressionEnsureSelect(expression.Argument, null, null); s.Wrap(scope); return(s); }
public override void Visit(DbElementExpression e) { Check.NotNull(e, "e"); BeginUnary(e); End(e); }
/// <summary> /// Implements the visitor pattern for <see cref="T:System.Data.Common.CommandTrees.DbElementExpression"/>. /// </summary> /// <param name="expression">The <see cref="T:System.Data.Common.CommandTrees.DbElementExpression"/> that is visited.</param> public override void Visit(DbElementExpression expression) { if (expression == null) { throw new ArgumentNullException("expression"); } expression.Argument.Accept(this); }
private DbExpression RewriteElementExpression(DbElementExpression expression) { DbExpression rewrittenInput = Rewrite(expression.Argument); if (!object.ReferenceEquals(expression.Argument, rewrittenInput)) { expression = rewrittenInput.Element(); } return(expression); }
private DbExpression RewriteElementExpression(DbElementExpression expression) { DbExpression dbExpression = this.Rewrite(expression.Argument); if (!object.ReferenceEquals((object)expression.Argument, (object)dbExpression)) { expression = dbExpression.Element(); } return((DbExpression)expression); }
/// <summary> /// Translate a NewInstance(Element(X)) expression into /// "select top(1) * from X" /// </summary> /// <param name="e"></param> /// <returns></returns> private ISqlFragment VisitCollectionConstructor(DbNewInstanceExpression e) { Debug.Assert(e.Arguments.Count <= 1); if (e.Arguments.Count == 1 && e.Arguments[0].ExpressionKind == DbExpressionKind.Element) { DbElementExpression elementExpr = e.Arguments[0] as DbElementExpression; SqlSelectStatement result = VisitExpressionEnsureSqlStatement(elementExpr.Argument); if (!IsCompatible(result, DbExpressionKind.Element)) { Symbol fromSymbol; TypeUsage inputType = MetadataHelpers.GetElementTypeUsage(elementExpr.Argument.ResultType); result = CreateNewSelectStatement(result, "element", inputType, out fromSymbol); AddFromSymbol(result, "element", fromSymbol, false); } result.Top.SetTopCount(1); return(result); } // Otherwise simply build this out as a union-all ladder CollectionType collectionType = MetadataHelpers.GetEdmType <CollectionType>(e.ResultType); Debug.Assert(collectionType != null); bool isScalarElement = MetadataHelpers.IsPrimitiveType(collectionType.TypeUsage); SqlBuilder resultSql = new SqlBuilder(); string separator = ""; // handle empty table if (e.Arguments.Count == 0) { Debug.Assert(isScalarElement); resultSql.Append(" select cast(null as "); resultSql.Append(MetadataHelpers.GetSqlPrimitiveType(collectionType.TypeUsage)); resultSql.Append(") as x from (select 1) as y where 1=0"); } foreach (DbExpression arg in e.Arguments) { resultSql.Append(separator); resultSql.Append(" select "); resultSql.Append(arg.Accept(this)); // For scalar elements, no alias is appended yet. Add this. if (isScalarElement) { resultSql.Append(" as x "); } separator = " union all "; } return(resultSql); }
public override Expression Visit(DbElementExpression expression) { Expression source = this.Visit(expression.Argument); Expression single = queryMethodExpressionBuilder.FirstOrDefault(source); var props = single.Type.GetProperties(); if (props.Length == 1) { // If the row record has a single property, it is evaluated too return(Expression.Property(single, props[0])); } return(single); }
public override Expression Visit(DbElementExpression expression) { Expression source = this.Visit(expression.Argument); Expression single = queryMethodExpressionBuilder.FirstOrDefault(source); var props = single.Type.GetProperties(); if (props.Length == 1) { // If the row record has a single property, it is evaluated too return Expression.Property(single, props[0]); } return single; }
public override void Visit(DbElementExpression expression) { VisitUnaryExpression(expression); }
public override void Visit(DbElementExpression expression) { throw new NotSupportedException("Visit(\"ElementExpression\") is not supported."); }
private DbExpression RewriteElementExpression(DbElementExpression expression) { DbExpression rewrittenInput = Rewrite(expression.Argument); if (!object.ReferenceEquals(expression.Argument, rewrittenInput)) { expression = rewrittenInput.Element(); } return expression; }
public override void Visit(DbElementExpression expression) { throw new NotSupportedException("Visit(\"DbElementExpression\") is not supported."); }
public override DbExpression Visit(DbElementExpression expression) { System.Diagnostics.Debug.Print("Visit(DbElementExpression): {0}", expression); return base.Visit(expression); }
public override bool Visit(DbElementExpression expression) { Check.NotNull <DbElementExpression>(expression, nameof(expression)); return(this.VisitUnaryExpression((DbUnaryExpression)expression)); }
/// <summary> /// Visitor pattern method for <see cref="DbElementExpression" />. /// </summary> /// <param name="expression"> The DbElementExpression that is being visited. </param> /// <exception cref="ArgumentNullException"> /// <paramref name="expression" /> /// is null /// </exception> public override void Visit(DbElementExpression expression) { Check.NotNull(expression, "expression"); VisitUnaryExpression(expression); }
public override void Visit(DbElementExpression expression) { this.VisitUnaryExpression((DbUnaryExpression)expression); }
public override void Visit(DbElementExpression e) { Check.NotNull <DbElementExpression>(e, nameof(e)); this.VisitUnary((DbUnaryExpression)e); }
public override void Visit(DbElementExpression expression) { }
public override void Visit(DbElementExpression e) { VisitUnary(e); }
public override TreeNode Visit(DbElementExpression e) { return(this.VisitUnary(e, true)); }
/// <summary> /// Typed visitor pattern method for DbElementExpression. /// </summary> /// <param name="expression"> The DbElementExpression that is being visited. </param> /// <returns> An instance of TResultType. </returns> public abstract TResultType Visit(DbElementExpression expression);
/// <summary> /// Visitor pattern method for DbElementExpression. /// </summary> /// <param name="expression"> The DbElementExpression that is being visited. </param> public abstract void Visit(DbElementExpression expression);
public override VfpExpression Visit(DbElementExpression expression) { return(new VfpElementExpression(expression.ResultType, expression.Argument.Accept(this))); }
public override DbExpression Visit(DbElementExpression expression) { System.Diagnostics.Debug.Print("Visit(DbElementExpression): {0}", expression); return(base.Visit(expression)); }
public override DbExpressionEntitySetInfo Visit(DbElementExpression expression) { Check.NotNull(expression, "expression"); return(null); }
public override object Visit(DbElementExpression expression) { this.Visit(expression.Argument); return(null); }
/// <summary> /// Visitor pattern method for DbElementExpression. /// </summary> /// <param name="expression"> The DbElementExpression that is being visited. </param> public abstract void Visit(DbElementExpression expression);
public override LegacyCommandTrees.DbExpression Visit(DbElementExpression expression) { Debug.Assert(expression != null, "expression != null"); return(expression.Argument.Accept(this).Element()); }
public override void Visit(DbElementExpression e) { BeginUnary(e); End(e); }
public override SqlFragment Visit(DbElementExpression expression) { throw new NotImplementedException(); }
public override ISqlFragment Visit(DbElementExpression e) { // ISSUE: What happens if the DbElementExpression is used as an input expression? // i.e. adding the '(' might not be right in all cases. return(new SqlBuilder("(", VisitExpressionEnsureSqlStatement(e.Argument), ")")); }
public override TreeNode Visit(DbElementExpression e) { Check.NotNull <DbElementExpression>(e, nameof(e)); return(this.VisitUnary((DbUnaryExpression)e, true)); }
public override void Visit(DbElementExpression expression) { VisitUnaryExpression(expression); }
public override void Visit(DbElementExpression e) { VisitUnary(e); }
public override bool Visit(DbElementExpression expression) { return(VisitUnaryExpression(expression)); }
public override void Visit(DbElementExpression e) { Check.NotNull(e, "e"); VisitUnary(e); }
public override TReturn Visit(DbElementExpression expression) { Check.NotNull <DbElementExpression>(expression, nameof(expression)); throw this.ConstructNotSupportedException((DbExpression)expression); }
public override SqlFragment Visit(DbElementExpression expression) { SelectStatement s = VisitInputExpressionEnsureSelect(expression.Argument, null, null); s.Wrap(scope); return s; }
public override TReturn Visit(DbElementExpression expression) { throw ConstructNotSupportedException(expression); }
public override TreeNode Visit(DbElementExpression e) { Check.NotNull(e, "e"); return(VisitUnary(e, true)); }
public override void Visit(DbElementExpression expression) { Contract.Requires(expression != null); }
public override DbExpressionEntitySetInfo Visit(DbElementExpression expression) { return(null); }
/// <summary> /// Implements the visitor pattern for <see cref="T:System.Data.Common.CommandTrees.DbElementExpression"/>. /// </summary> /// <param name="expression">The <see cref="T:System.Data.Common.CommandTrees.DbElementExpression"/> that is visited.</param> public override void Visit(DbElementExpression expression) { if (expression == null) { throw new ArgumentNullException("expression"); } expression.Argument.Accept(this); }