public void SetCommandParameter(string text, IDataParameterCollection Parameters, object entity = null) { var s = Regex.Matches(text, "@\\w+(?=[\\s|,|)])|@\\w+$", RegexOptions.Compiled | RegexOptions.IgnoreCase); var d = new DynamicHandlerCompiler <object>(entity); foreach (Match a in s) { var name = a.Value.Replace("@", string.Empty); if (this.where != null) { if (where.Contains(name)) { var p = CreaterParamger(a.Value, where.GetValue(name)) as IDataParameter; Parameters.Add(p); continue; } } if (entity != null) { var f = d.CreaterGetPropertyHandler <dynamic>(name); if (Parameters.Contains(a.Value)) { (Parameters[a.Value] as DbParameter).Value = f(entity) ?? string.Empty; } else { Parameters.Add(CreaterParamger(a.Value, f(entity) ?? string.Empty) as IDataParameter); } } } }
public override int PagingByList(IList <T> entitys, IPaing paing, IWhereGroup wheres, IList <ISorting> sortin = null, IList <IProperty> disabled = null) { object rownum, s = null; if (wheres != null) { var d = new DynamicHandlerCompiler <object>(); var itmes = wheres.GetCreaterDynamicClassPropertys(); var type = d.CreaterAnonEntity("anonClass", itmes); s = Activator.CreateInstance(type, CreaterDynamicClassProperty.GetValues(itmes)); } this.BatBuilder.SelectBatBuilder(wheres, new Polymerize[] { new Polymerize(this.Mapper.PrimaryKey, PolymerizeType.Count, "a") }); this.ExecuteScalar(s, out rownum); paing.SetCount((int)rownum); if (paing.PageNum > 1) { var p = SqlDBbatBuilder <T> .FilterProperty(this.Mapper, disabled); sortin = SqlDBbatBuilder <T> .InitiSorting(this.Mapper, sortin); var str = new StringBuilder($"select * from "); str.Append($"(select top({paing.PageNumber * paing.Showline}) {string.Join(",", p)}, row_number() over(order by {string.Join(",", sortin)} ) as row from {this.Mapper.TableName} "); str.Append($"{(wheres == null ? string.Empty : wheres.ToString())}) as paging "); str.Append($"where row>{paing.Showline * (paing.PageNumber - 1)}"); var bar = new SqlDBbatBuilder <T>(this.Mapper); bar.Additional(str.ToString(), wheres); this.Execute(entitys, bar, s); } else { this.Select(entitys, wheres, disabled, sortin); } return(paing.Count); }
protected IProperty[] PropertyIniti() { var ps = this.IgnoreItem() ?? new string[0]; var query = from p in typeof(T).GetProperties() select new PropertyMap(p.Name, typeof(T).Name, p.PropertyType, null, (ps.Any((m) => p.Name == m) && ps.Count() > 0)); var d = new DynamicHandlerCompiler <DataEntity>(typeof(T)); this._dynamicPropertyHandles = from t in query select new DynamicPropertyHandle <DataEntity>() { PropertyName = t.Name, SetDynamicPropertyHandle = d.CreaterSetPropertyHandler <dynamic>(t.Name), GetDynamicPropertyHandle = d.CreaterGetPropertyHandler <dynamic>(t.Name) }; return(query.ToArray()); }
public override int PagingByList <K>(IList <T> entitys, IWhereGroup wheres, IPaing paing, JoinType Type, IList <ISorting> sortin = null, IList <IProperty> disabled = null) { object rownum, s = null; if (wheres != null) { var d = new DynamicHandlerCompiler <object>(); var itmes = wheres.GetCreaterDynamicClassPropertys(); var type = d.CreaterAnonEntity("anonClass", itmes); s = Activator.CreateInstance(type, CreaterDynamicClassProperty.GetValues(itmes)); } this.BatBuilder.ScalarBatBuilder <K>(wheres, -1, Type, new Polymerize[] { new Polymerize(this.Mapper.PrimaryKey, PolymerizeType.Count, "a", this.Mapper.TableName) }, null, null); this.ExecuteScalar(s, out rownum); paing.SetCount((int)rownum); if (paing.PageNum > 1) { sortin = SqlDBbatBuilder <T> .InitiSorting(this.Mapper, sortin); var kMapper = (IEntityMapper <K>)EntityMapperCacheManager.GetMapperCacheManager()[typeof(K).Name].Value; var fok = (from t in this.Mapper.Relevances where t.Type == typeof(K) select t).SingleOrDefault(); var relevanceStr = string.Empty; var p = SqlDBbatBuilder <T> .FilterProperty <K>(this.Mapper, kMapper, fok, Type, out relevanceStr); var str = new StringBuilder($"select * from "); str.Append($"(select top({paing.PageNumber * paing.Showline}) {string.Join(",", p)}, row_number() over(order by {string.Join(",", sortin)} ) as row from {relevanceStr} "); str.Append($"{(wheres == null ? string.Empty : wheres.ToString())}) as paging "); str.Append($"where row>{paing.Showline * (paing.PageNumber - 1)}"); var bar = new SqlDBbatBuilder <T>(this.Mapper); bar.Additional(str.ToString(), wheres); this.Execute <K>(entitys, bar, s); } else { this.Select <K>(entitys, paing.Showline, wheres, Type, disabled); } return(paing.Count); }