Exemple #1
0
        /// <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);
        }
Exemple #2
0
 public WhereClause(ScriptDom.WhereClause src) : base(src)
 {
     this.SearchCondition = Copier.Copy <BooleanExpression>(src.SearchCondition);
     this.Cursor          = Copier.Copy <CursorId>(src.Cursor);
 }
Exemple #3
0
 public virtual void ExplicitVisit(WhereClause whereClause)
 {
 }