/// <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;
 }
Exemple #3
0
 public virtual void ExplicitVisit(QualifiedJoin qualifiedJoin)
 {
 }