protected override Expression VisitBinary(BinaryExpression b) { var left = Visit(b.Left); var right = Visit(b.Right); if (left is NamedValueExpression nv0 && right is ColumnExpression c0) { left = QueryUtility.GetNamedValueExpression(nv0.Name, nv0.Value, (DbType)c0.MapInfo.DataType); }
protected override ColumnAssignment VisitColumnAssignment(ColumnAssignment ca) { ca = base.VisitColumnAssignment(ca); Expression expression = ca.Expression; if (expression is NamedValueExpression nv) { expression = QueryUtility.GetNamedValueExpression(nv.Name, nv.Value, (DbType)ca.Column.MapInfo.DataType); } return(this.UpdateColumnAssignment(ca, ca.Column, expression)); }
protected override Expression VisitBinary(BinaryExpression b) { Expression left = this.Visit(b.Left); Expression right = this.Visit(b.Right); if (left.NodeType == (ExpressionType)DbExpressionType.NamedValue && right.NodeType == (ExpressionType)DbExpressionType.Column) { NamedValueExpression nv = (NamedValueExpression)left; ColumnExpression c = (ColumnExpression)right; left = QueryUtility.GetNamedValueExpression(nv.Name, nv.Value, (DbType)c.MapInfo.DataType); } else if (b.Right.NodeType == (ExpressionType)DbExpressionType.NamedValue && b.Left.NodeType == (ExpressionType)DbExpressionType.Column) { NamedValueExpression nv = (NamedValueExpression)right; ColumnExpression c = (ColumnExpression)left; right = QueryUtility.GetNamedValueExpression(nv.Name, nv.Value, (DbType)c.MapInfo.DataType); } return(b.Update(left, b.Conversion, right)); }