Пример #1
0
        public int Execute(Type elementType, IDictionary <MemberExpression, object> properties, Expression predicate)
        {
            SqlServerUpdateCommandBuilder updateBuilder = new SqlServerUpdateCommandBuilder(elementType.Name);

            foreach (var item in properties)
            {
                updateBuilder.AddColumn(item.Key.Member.Name, item.Value);
            }

            if (predicate != null)
            {
                SqlServerWherePartsCommandBuilder whereBuider = new SqlServerWherePartsCommandBuilder(updateBuilder.Parameters);

                Expression expression = PartialEvaluatingExpressionTreeVisitor.EvaluateIndependentSubtrees(predicate);

                SqlServerWhereClauseVisitor visitor = new SqlServerWhereClauseVisitor();

                visitor.Translate(expression, whereBuider);

                updateBuilder.WhereParts = whereBuider.WherePartsBuilder.ToString();
            }

            this.sessionProvider.ExecutedCommandBuilder = updateBuilder;

            return(this.sessionProvider.ExecuteNonQuery(updateBuilder));
        }
        /// <summary>
        /// 解析 Where 语句
        /// </summary>
        /// <param name="whereClause"></param>
        /// <param name="queryModel"></param>
        /// <param name="index"></param>
        public override void VisitWhereClause(WhereClause whereClause, QueryModel queryModel, int index)
        {
            SqlServerWherePartsCommandBuilder whereBuilder = new SqlServerWherePartsCommandBuilder(this.commandBuilder.Parameters);

            SqlServerWhereClauseVisitor visitor = new SqlServerWhereClauseVisitor();

            visitor.Translate(whereClause.Predicate, whereBuilder);

            commandBuilder.WhereParts.Add(whereBuilder.ToString());

            base.VisitWhereClause(whereClause, queryModel, index);
        }
Пример #3
0
        public int Execute(Type elementType, Expression predicate)
        {
            SqlServerDeleteCommandBuilder deleteBuilder = new SqlServerDeleteCommandBuilder(elementType.Name);

            if (predicate != null)
            {
                SqlServerWherePartsCommandBuilder whereBuilder = new SqlServerWherePartsCommandBuilder(deleteBuilder.Parameters);

                Expression expression = PartialEvaluatingExpressionTreeVisitor.EvaluateIndependentSubtrees(predicate);

                SqlServerWhereClauseVisitor visitor = new SqlServerWhereClauseVisitor();

                visitor.Translate(expression, whereBuilder);

                deleteBuilder.WhereParts = whereBuilder.WherePartsBuilder.ToString();
            }

            this.sessionProvider.ExecutedCommandBuilder = deleteBuilder;

            return(this.sessionProvider.ExecuteNonQuery(deleteBuilder));
        }
Пример #4
0
        /// <summary>
        /// 翻译表达式
        /// </summary>
        /// <returns></returns>
        public void Translate(Expression expression, SqlServerWherePartsCommandBuilder commandBuilder)
        {
            this.commandBuilder = commandBuilder;

            this.VisitExpression(expression);
        }