Example #1
0
        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);
                    }
                }
            }
        }
Example #2
0
        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);
        }
Example #3
0
        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());
        }
Example #4
0
        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);
        }