Пример #1
0
        static void Main(string[] args)
        {
            var utils   = new DataUtils();
            var init    = new InitData();
            var efUtils = new EFUtils();
            var users   = init.GetUsers(10000);
            //DateTime strtime = DateTime.Now;
            //for (int i = 0; i < 10000; i++)
            //{
            //    utils.Add(init.GetUser());
            //}
            //DateTime endtime = DateTime.Now;
            //Console.WriteLine($"dapper添加10000个用户:{endtime - strtime}");
            //DateTime efstrtime = DateTime.Now;
            //for (int i = 0; i < 10000; i++)
            //{
            //    efUtils.Add(init.GetUser());
            //}
            //DateTime efendTime = DateTime.Now;
            //Console.WriteLine($"EF添加10000个用户:{efendTime - efstrtime}");

            //DateTime strtime = DateTime.Now;
            //utils.AddRange(users);
            //DateTime endtime = DateTime.Now;
            //Console.WriteLine($"dapper批量添加10000个用户:{endtime - strtime}");
            //var users2 = init.GetUsers(10000);
            //DateTime efstrtime = DateTime.Now;
            //efUtils.AddRange(users2);
            //DateTime efendtime = DateTime.Now;
            //Console.WriteLine($"EF批量添加10000个用户:{efendtime - efstrtime}");
            //utils.InitArea();
            //DateTime dpselectStrTime = DateTime.Now;
            //for (int i = 0; i < 1000; i++)
            //{
            //    var area = utils.SelectAreaByCode("130500");
            //}
            //DateTime dpselectEndTime = DateTime.Now;


            //DateTime efselectStrTime = DateTime.Now;
            //for (int i = 0; i < 1000; i++)
            //{
            //    var area = efUtils.LinqSelectArea("130500");
            //}
            //DateTime efselectEndTime = DateTime.Now;
            //Console.WriteLine($"dapper查询1000次:{dpselectEndTime - dpselectStrTime}");
            //Console.WriteLine($"EF查询1000次:{efselectEndTime - efselectStrTime}");
            SortedDictionary <string, string> sort = new SortedDictionary <string, string>();
            object dto = new AreaDto
            {
                Name  = "woshiceshi",
                pName = "ceshishsishi"
            };
            Type type = dto.GetType();
            var  ts   = type.GetProperties();

            Console.ReadKey();
        }
Пример #2
0
        public override IQueryable <User> Filter(IQueryable <User> entities, FilterQuery filterQuery)
        {
            if (filterQuery.Attribute.Equals("name", StringComparison.OrdinalIgnoreCase))
            {
                return(entities.Where(u => EFUtils.Like(u.Name, filterQuery.Value)));
            }

            return(entities.OptionallyFilterOnQueryParam(filterQuery,
                                                         "organization-id",
                                                         this,
                                                         CurrentUserContext,
                                                         GetWithOrganizationId,
                                                         FilterOnOrganizationHeader,
                                                         null,
                                                         null));
        }
Пример #3
0
        private Task <object> GetByPrimaryKey(IEntityType entity, string id)
        {
            var primaryKey = EFUtils.GetPrimaryKeyProperty(entity);

            if (primaryKey == null)
            {
                throw new Exception("Could not find primary key for " + entity.Name);
            }
            var pkQuery = new Dictionary <string, string[]>
            {
                { primaryKey.Name, new[] { id } }
            };

            IQueryable <object> results = Reflection.GetDbSetForType(db, entity);

            return(Expressions
                   .FilterByEntityParameters(results, entity, pkQuery)
                   .SingleOrDefaultAsync());
        }
Пример #4
0
        public override IQueryable <Project> Filter(IQueryable <Project> entities, FilterQuery filterQuery)
        {
            if (filterQuery.Has(ORGANIZATION_HEADER))
            {
                var orgIds = CurrentUser.OrganizationIds.OrEmpty();

                return(entities.FilterByOrganization(filterQuery, allowedOrganizationIds: orgIds));
            }

            var value = filterQuery.Value;
            var op    = filterQuery.Operation.ToEnum <FilterOperations>(defaultValue: FilterOperations.eq);

            if (filterQuery.Has(PROJECT_UPDATED_DATE))
            {
                var date = value.DateTimeFromISO8601();

                switch (op)
                {
                case FilterOperations.ge:
                    return(entities
                           .Where(p => p.DateUpdated > date));

                case FilterOperations.le:
                    return(entities
                           .Where(p => p.DateUpdated < date));
                }
            }

            if (filterQuery.Has(PROJECT_PRODUCT_NAME_ANY))
            {
                return(entities
                       .Include(p => p.Products)
                       .ThenInclude(product => product.ProductDefinition)
                       .Where(p => p.Products
                              .Any(product => EFUtils.Like(product.ProductDefinition.Name, value))));
            }

            if (filterQuery.Has(PROJECT_PRODUCT_DEFINITION_ID_ANY))
            {
                return(entities
                       .Include(p => p.Products)
                       .Where(p => p.Products
                              .Any(product => product.ProductDefinitionId.ToString() == value)));
            }

            if (filterQuery.Has(PROJECT_SEARCH_TERM))
            {
                return(entities
                       .Include(p => p.Owner)
                       .Include(p => p.Organization)
                       .Include(p => p.Group)
                       .Where(p => (
                                  EFUtils.Like(p.Name, value) ||
                                  EFUtils.Like(p.Language, value) ||
                                  EFUtils.Like(p.Organization.Name, value) ||
                                  EFUtils.Like(p.Owner.Name, value) ||
                                  EFUtils.Like(p.Group.Name, value)
                                  )));
            }


            return(base.Filter(entities, filterQuery));
        }