예제 #1
0
        protected QueryConditional(Type[] dbtypes, Expression expr, IDataProvider dataProvider)
        {
            LoadObjects(dbtypes);
            DataProvider = dataProvider;
            string conditional = TranslateExtendtion.TranslateConditional(expr, DataProvider);

            this.strConditional = new StringBuilder(conditional);
        }
예제 #2
0
        public IOperatorWhere <TModel> Where(Expression <Func <TModel, bool> > whereExp)
        {
            string whereSQL = TranslateExtendtion.TranslateConditional(whereExp, Provider);
            Regex  regex    = new Regex(@"\w+\.");

            whereSQL = regex.Replace(whereSQL, @"");
            SQL     += string.Format(" And {0}", whereSQL);
            return(this);
        }
예제 #3
0
        /// <summary>
        ///  查询方法,对查询的列进行分组操作
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <param name="query"></param>
        /// <param name="propertyExpression">列名表达式</param>
        /// <returns>查询构造器,后面可接其它查询构造器方法</returns>
        public static SelectQuery <TModel> GroupBy <TModel>(this SelectQuery <TModel> query, Expression <Func <TModel, object> > propertyExpression)
        {
            string property = TranslateExtendtion.TranslateObject(propertyExpression, query.Provider);
            Regex  regex    = new Regex(@"[a-z|A-Z]+\w*\.");

            property = regex.Replace(property, @"");
            query.SqlBuilder.AddGroupBy(query.TableIndex, property);
            return(query);
        }
예제 #4
0
        /// <summary>
        ///  查询方法,条件查询Or操作
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <param name="query"></param>
        /// <param name="whereExpression">条件表达式</param>
        /// <returns>查询构造器,后面可接其它查询构造器方法</returns>
        public static SelectQuery <TModel> Or <TModel>(this SelectQuery <TModel> query, Expression <Func <TModel, bool> > whereExpression)
        {
            string whereSQL = TranslateExtendtion.TranslateConditional(whereExpression, query.Provider);
            Regex  regex    = new Regex(@"[a-z|A-Z]+\w*\.");

            whereSQL = regex.Replace(whereSQL, @"T1.");
            query.WhereCreater.Append(" OR ")
            .Append(whereSQL);
            return(query);
        }
예제 #5
0
        private QueryConditional AndOr(Expression expr, string andor)
        {
            string conditional = TranslateExtendtion.TranslateConditional(expr, DataProvider);

            this.strConditional
            .Append(" ")
            .Append(andor)
            .Append(" ")
            .Append(conditional);
            return(this);
        }
예제 #6
0
        /// <summary>
        /// 选择返回列,用于返回指定名称属性集合数据源
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <param name="query"></param>
        /// <param name="newObject"></param>
        /// <returns>查询构造器,一般使用Select语句后应该执行查询</returns>
        public static SelectQuery <TModel> Select <TModel>(this SelectQuery <TModel> query, Expression <Func <TModel, object> > newObject)
        {
            var fields = TranslateExtendtion.TranslateObject(newObject, query.Provider)
                         .Split(',')
                         .Select(f => GetMetaFieldName <TModel>(query.TableIndex, f)).ToList();

            query.SqlBuilder.ClearFields();
            var keys = DbMetaDataManager.GetKeys(typeof(TModel)).Select(k => GetMetaFieldName <TModel>(query.TableIndex, k));

            var keyAndFields = keys.ToList();

            keyAndFields.AddRange(fields);

            keyAndFields.ForEach(f => query.SqlBuilder.AddField(f));
            return(query);
        }