/// <summary> /// WHERE句 にコンストラクタで指定された条件式を追加する。 /// </summary> /// <param name="node">WHERE句</param> public override void ExplicitVisit(Microsoft.SqlServer.TransactSql.ScriptDom.QualifiedJoin 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.QualifiedJoin, 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 QualifiedJoin(ScriptDom.QualifiedJoin src) : base(src) { this.SearchCondition = Copier.Copy <BooleanExpression>(src.SearchCondition); this.QualifiedJoinType = src.QualifiedJoinType; this.JoinHint = src.JoinHint; }
public virtual void ExplicitVisit(QualifiedJoin qualifiedJoin) { }