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)); }
/// <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)); }
/// <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); }