public dynamic GetDynamic(ParamQuery param) { var result = new ExpandoObject(); Logger("获取动态对象", () => result = BuilderParse(param).QuerySingleDynamic()); return(result); }
public ParamQuery ToParamQuery() { var pQuery = new ParamQuery(); var settings = XElement.Parse(settingXml); var defaultOrderBy = getXmlElementAttr(settings, "defaultOrderBy"); pQuery.Select(getXmlElementValue(settings, "select")); //获取分页及排序信息 var page = parseInt(this.request["page"],1); var rows = parseInt(this.request["rows"],0); var orderby = string.Join(" ", getFieldName(this["sort"],true), this["order"]).Trim(); if (string.IsNullOrEmpty(orderby)) orderby = defaultOrderBy; var sFrom = getXmlElementValue(settings, "from"); if (string.IsNullOrEmpty(sFrom)) sFrom = getXmlElementValue(settings, "table"); var fromMatches = new Regex(@"\$variable\[([a-zA-Z_][a-zA-Z0-9_]*)\]", RegexOptions.Multiline).Matches(sFrom); foreach (Match match in fromMatches) sFrom = sFrom.Replace(match.Groups[0].ToString(), this[match.Groups[1].ToString()]); pQuery.From(sFrom) .Paging(page, rows) .OrderBy(orderby); parseWhere(settings, (name, value, compare, variable, extend) => { pQuery.AndWhere(name, value, compare,extend); }); return pQuery; }
public TField GetField <TField>(ParamQuery param) { var result = default(TField); Logger("获取字段", () => result = BuilderParse(param).QueryValue <TField>()); return(result); }
public List <T> GetModelList(ParamQuery param = null) { var result = new List <T>(); Logger("获取实体列表", () => result = BuilderParse(param).QueryMany()); return(result); }
public List <dynamic> GetDynamicList(ParamQuery param = null) { var result = new List <dynamic>(); Logger("获取动态列表", () => result = BuilderParse(param).QueryManyDynamic()); return(result); }
protected ISelectBuilder <T> BuilderParse(ParamQuery param) { if (param == null) { param = new ParamQuery(); } var data = param.GetData(); var from = data.From.Length == 0 ? typeof(T).Name : data.From; var select = string.IsNullOrEmpty(data.Select) ? (from + ".*") : data.Select; var where = GetSqlWhere(data.Where); var selectBuilder = db.Select <T>(select) .From(from) .Where(where) .GroupBy(data.GroupBy) .Having(data.Having) .OrderBy(data.OrderBy) .Paging(data.PagingCurrentPage, data.PagingItemsPerPage); var parameters = GetQueryParameters(data.Where); foreach (var p in parameters) { selectBuilder.Parameter(p.Name, p.Value, p.ParameterType, p.Direction, p.Size); } return(selectBuilder); }
public T GetModel(ParamQuery param) { var result = new T(); Logger("获取实体对象", () => result = BuilderParse(param).QuerySingle()); return(result); }
public dynamic GetDynamicListWithPaging(ParamQuery param = null) { dynamic result = new ExpandoObject(); result.rows = this.GetDynamicList(param); result.total = this.queryRowCount(param, result.rows); return(result); }
//最大值加一 public static string maxplus(IDbContext db, string table, string field, ParamQuery pQuery) { //var where = pQuery.GetData().WhereSql; var sqlWhere = " where 1 = 1 "; if (pQuery != null) sqlWhere += " and " + pQuery.GetData().WhereSql; var dbkey = db.Sql(String.Format("select isnull(max({0}),0) from {1} {2}", field, table, sqlWhere)).QuerySingle<string>(); var cachedKeys = getCacheKey(table, field); var currentKey = maxOfAllKey(cachedKeys, ZConvert.ToString(dbkey)); var key = ZConvert.ToString(currentKey + 1); SetCacheKey(table, field, key); return key; }
protected int queryRowCount(ParamQuery param, dynamic rows) { if (rows != null) { if (null == param || param.GetData().PagingItemsPerPage == 0) { return(rows.Count); } } var RowCountParam = param; var sql = BuilderParse(RowCountParam.Paging(1, 0).OrderBy(string.Empty)).GetSql(); return(db.Sql(@"select count(*) from ( " + sql + " ) tb_temp").QuerySingle <int>()); }
public static string inventory(IDbContext db, string table, string field, ParamQuery pQuery) { //var where = pQuery.GetData().WhereSql; var sqlWhere = " where 1 = 1 "; if (pQuery != null) { sqlWhere += " and " + pQuery.GetData().WhereSql; } var dbkey = db.Sql(String.Format("select isnull(max({0}),0) from {1} {2}", field, table, sqlWhere)).QuerySingle <string>(); var cachedKeys = getCacheKey(table, field); var currentKey = maxOfAllKey(cachedKeys, ZConvert.ToString(dbkey)); var key = ZConvert.ToString(currentKey + 1); SetCacheKey(table, field, key); return(key); }
//最大值加一 public static string maxplus(IDbContext db, string table, string field, ParamQuery pQuery) { var sqlWhere = " where 1 = 1 "; if (pQuery != null) { var conditions = pQuery.GetData().Where; conditions.ForEach(c => sqlWhere += c.ToSql( GetDbType(db), !string.IsNullOrWhiteSpace(sqlWhere))); } var dbkey = db.Sql(String.Format("select {{isnull,max({0}),0}} from {1} {2}", field, table, sqlWhere)).QuerySingle<string>(); var cachedKeys = getCacheKey(table, field); var currentKey = maxOfAllKey(cachedKeys, ConvertHelper.ToString(dbkey)); var key = ConvertHelper.ToString(currentKey + 1); SetCacheKey(table, field, key); return key; }
//最大值加一 public static string maxplus(IDbContext db, string table, string field, ParamQuery pQuery) { var sqlWhere = " where 1 = 1 "; if (pQuery != null) { var conditions = pQuery.GetData().Where; conditions.ForEach(c => sqlWhere += c.ToSql(GetDbType(db), !string.IsNullOrWhiteSpace(sqlWhere))); } var dbkey = db.Sql(String.Format("select {{isnull,max({0}),0}} from {1} {2}", field, table, sqlWhere)).QuerySingle <string>(); var cachedKeys = getCacheKey(table, field); var currentKey = maxOfAllKey(cachedKeys, ConvertHelper.ToString(dbkey)); var key = ConvertHelper.ToString(currentKey + 1); SetCacheKey(table, field, key); return(key); }
protected ISelectBuilder <T> BuilderParse(ParamQuery param) { if (param == null) { param = new ParamQuery(); } var data = param.GetData(); var sFrom = data.From.Length == 0 ? typeof(T).Name : data.From; var selectBuilder = db.Select <T>(string.IsNullOrEmpty(data.Select) ? (sFrom + ".*") : data.Select) .From(sFrom) .Where(data.WhereSql) .GroupBy(data.GroupBy) .Having(data.Having) .OrderBy(data.OrderBy) .Paging(data.PagingCurrentPage, data.PagingItemsPerPage); return(selectBuilder); }
public ParamQuery ToParamQuery() { var pQuery = new ParamQuery(); var settings = XElement.Parse(settingXml); var defaultOrderBy = getXmlElementAttr(settings, "defaultOrderBy"); pQuery.Select(getXmlElementValue(settings, "select")); //获取分页及排序信息 var page = parseInt(this.request["page"], 1); var rows = parseInt(this.request["rows"], 0); var orderby = string.Join(" ", getFieldName(this["sort"], true), this["order"]).Trim(); if (string.IsNullOrEmpty(orderby)) { orderby = defaultOrderBy; } var sFrom = getXmlElementValue(settings, "from"); if (string.IsNullOrEmpty(sFrom)) { sFrom = getXmlElementValue(settings, "table"); } var fromMatches = new Regex(@"\$variable\[([a-zA-Z_][a-zA-Z0-9_]*)\]", RegexOptions.Multiline).Matches(sFrom); foreach (Match match in fromMatches) { sFrom = sFrom.Replace(match.Groups[0].ToString(), this[match.Groups[1].ToString()]); } pQuery.From(sFrom) .Paging(page, rows) .OrderBy(orderby); parseWhere(settings, (name, value, compare, variable, extend) => { pQuery.AndWhere(name, value, compare, extend); }); return(pQuery); }