/// <summary> /// WHERE句 にコンストラクタで指定された条件式を追加する。 /// </summary> /// <param name="node">WHERE句</param> public override void ExplicitVisit(Microsoft.SqlServer.TransactSql.ScriptDom.WhereClause node) { try { var booleanExpression = FindBooleanExpression.Compile().Invoke(node); if (booleanExpression != null && BooleanBinaryExpressionType.HasValue) { booleanExpression = new BooleanBinaryExpression() { BinaryExpressionType = BooleanBinaryExpressionType.Value, FirstExpression = booleanExpression, SecondExpression = BooleanExpression, }; var booleanBinaryExpression = (BooleanBinaryExpression)booleanExpression; } else { booleanExpression = BooleanExpression; } var member = (MemberExpression)FindBooleanExpression.Body; var param = Expression.Parameter(typeof(BooleanExpression), "value"); var set = Expression.Lambda <Action <Microsoft.SqlServer.TransactSql.ScriptDom.WhereClause, BooleanExpression> >( Expression.Assign(member, param), FindBooleanExpression.Parameters[0], param); set.Compile().Invoke(node, booleanExpression); } catch (Exception e) { throw new InvalidOperationException("指定された条件式は追加できません。", e); } base.ExplicitVisit(node); }
public WhereClause(ScriptDom.WhereClause src) : base(src) { this.SearchCondition = Copier.Copy <BooleanExpression>(src.SearchCondition); this.Cursor = Copier.Copy <CursorId>(src.Cursor); }
public virtual void ExplicitVisit(WhereClause whereClause) { }