Esempio n. 1
0
        TType GetFunction <TType, TModel>(Expression <Func <TModel, bool> > expression, Expression <Func <TModel, TType> > selectField, FunctionType functionType, bool compileSp = false) where TModel : IModel, new()
        {
            LambdaQuery <TModel> query = new LambdaQuery <TModel>(this, false);
            string condition           = query.FormatExpression(expression);

            query.FillParames(this);
            string field = "";

            if (selectField.Body is MemberExpression)
            {
                MemberExpression mExp = (MemberExpression)selectField.Body;
                field = mExp.Member.Name;
                if (!field.Contains(","))
                {
                    field = _DBAdapter.KeyWordFormat(field);
                }
            }
            else
            {
                var constant = (ConstantExpression)selectField.Body;
                field = constant.Value.ToString();
            }
            CheckTableCreated <TModel>();
            string tableName = TypeCache.GetTableName <TModel>();

            string sql = "select " + functionType + "(" + field + ") from " + tableName + ' ' + _DBAdapter.GetWithNolockFormat() + " where " + condition;

            if (compileSp)
            {
                return(AutoExecuteScalar <TType>(sql));
            }
            return(ExecScalar <TType>(sql));
        }
Esempio n. 2
0
        /// <summary>
        /// 指定条件删除
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <param name="expression"></param>
        /// <returns></returns>
        public int Delete <TModel>(Expression <Func <TModel, bool> > expression) where TModel : IModel, new()
        {
            LambdaQuery <TModel> query = new LambdaQuery <TModel>(dbContext, false);
            string condition           = query.FormatExpression(expression);

            query.FillParames(this);
            return(Delete <TModel>(condition));
        }
Esempio n. 3
0
        /// <summary>
        /// 指定条件和参数进行更新
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="expression">条件</param>
        /// <param name="setValue">值</param>
        /// <returns></returns>
        public int Update <T>(Expression <Func <T, bool> > expression, ParameCollection setValue) where T : IModel, new()
        {
            if (setValue.Count == 0)
            {
                throw new Exception("更新时发生错误,参数值为空 ParameCollection setValue");
            }
            LambdaQuery <T> query     = new LambdaQuery <T>(this, false);
            string          condition = query.FormatExpression(expression);

            //foreach (var n in query.QueryParames)
            //{
            //    AddParam(n.Key, n.Value);
            //}
            query.FillParames(this);
            var count = Update <T>(setValue, condition);

            UpdateCacheItem <T>(expression, setValue);
            //CacheUpdated(typeof(T).Name);
            return(count);
        }