Beispiel #1
0
        internal static string CreateQuerySQLWithActive <T>(Expression <Func <T, bool> > expression, Expression <Func <T, object> > fieldExp = null, DapperSort sort = null) where T : class
        {
            string fieldNames = "*";

            if (fieldExp != null)
            {
                FieldsFormater format = new FieldsFormater();
                format.Visit(fieldExp);
                if (format.Parameters.Count > 0)
                {
                    fieldNames = string.Join(",", format.Parameters.Select(x => x.Key));
                }
            }

            var    translate = new SqlTranslateFormater();
            string sqlWhere  = translate.Translate(expression);

            if (sort != null && sort.Count > 0)
            {
                sqlWhere += $" Order By {sort}";
            }

            string tableName = GetTableName(typeof(T));

            StringBuilder sqlBuilder = new StringBuilder($"select {fieldNames} from {tableName} where IsActive=1 AND ");

            sqlBuilder.Append(sqlWhere);
            return(sqlBuilder.ToString());
        }
Beispiel #2
0
        /// <summary>
        /// 立即执行更新语句,API采用 Update({new entity expression}).Where(expression).Go()的链式使用方式
        /// </summary>
        /// <typeparam name="TModel">模型名称</typeparam>
        /// <param name="connection"></param>
        /// <param name="objExp">更新对象表达式,表示要更新的列信息</param>
        /// <returns>将返回一个操作接口,此接口会有一个Where方法和Go方法,Where表示要添加条件,Go则表示立即执行语句。</returns>
        /// <example> session.Update(u => new AdminUser1 {ID = "5", NameA = "maxzhang"}).Where(p => p.Age > 5).Go</example>
        public static IOperatorWhere <TModel> Update <TModel>(this IDbConnection connection, Expression <Func <TModel, TModel> > objExp) where TModel : class
        {
            string tableName = GetTableName(typeof(TModel));

            FieldsFormater format = new FieldsFormater();

            format.Visit(objExp);
            string paramterNameAndValues = string.Join(",", format.Parameters.Select(kv => kv.Key + "=" + kv.Value.Name));

            string template = string.Format("Update {0} SET {1} Where ", tableName, paramterNameAndValues);
            var    ps       = format.Parameters.Values.Where(p => p.IsMethodType == false).ToList();

            return(new OperatorWhereObject <TModel>(connection, template, ps));
        }