Пример #1
0
        public List <AccessTypeSummary> GetAccessTypeSummary(string accessTypeCode = null, DateTime?startDate = null, DateTime?finishDate = null)
        {
            using (MyAccessStatisticsContext context = new MyAccessStatisticsContext())
            {
                var query =
                    from data in context.AccessTypeSummarys
                    select data;

                // 指定了类型代码.
                if (!String.IsNullOrEmpty(accessTypeCode))
                {
                    query = query.Where(p => p.AccessTypeCode == accessTypeCode);
                }

                // 指定了开始时间.
                if (startDate != null)
                {
                    query = query.Where(p => p.AccessDate >= startDate.Value);
                }

                // 指定了结束时间.
                if (finishDate != null)
                {
                    query = query.Where(p => p.AccessDate < finishDate.Value.AddDays(1));
                }

                var resultList = query.ToList();

                return(resultList);
            }
        }
        /// <summary>
        /// 新增访问类型明细日志.
        /// </summary>
        /// <param name="context"></param>
        /// <param name="accessTypeCode"></param>
        /// <param name="accessDetailCode"></param>
        /// <param name="expInfo"></param>
        private void NewAccessDetailLog(MyAccessStatisticsContext context, string accessTypeCode, string accessDetailCode, long?userID, string expInfo = null)
        {
            AccessDetailLog log = new AccessDetailLog()
            {
                AccessTypeCode = accessTypeCode,
                DetailCode     = accessDetailCode,
                AccessTime     = DateTime.Now,
                UserID         = userID,
                ExpInfo        = expInfo,
            };

            context.AccessDetailLogs.Add(log);
        }
        /// <summary>
        /// 更新访问类型明细.
        /// </summary>
        /// <param name="context"></param>
        /// <param name="accessTypeCode"></param>
        /// <param name="accessDetailCode"></param>
        private void UpdateAccessDetail(MyAccessStatisticsContext context, string accessTypeCode, string accessDetailCode)
        {
            // 检查, 访问明细 是否存在.
            AccessDetail accessDetail = context.AccessDetails.Find(accessTypeCode, accessDetailCode);

            if (accessDetail == null)
            {
                // 未知的明细, 自动创建.
                accessDetail = new AccessDetail()
                {
                    AccessTypeCode = accessTypeCode,
                    DetailCode     = accessDetailCode,
                };
                // 新增.
                context.AccessDetails.Add(accessDetail);
            }
        }
Пример #4
0
        public List <AccessDetailLog> GetAccessDetailLog(string accessTypeCode = null, string accessDetailCode = null, DateTime?startDate = null, DateTime?finishDate = null, long?userID = null)
        {
            using (MyAccessStatisticsContext context = new MyAccessStatisticsContext())
            {
                var query =
                    from data in context.AccessDetailLogs
                    select data;

                // 指定了类型代码.
                if (!String.IsNullOrEmpty(accessTypeCode))
                {
                    query = query.Where(p => p.AccessTypeCode == accessTypeCode);
                }

                // 指定了明细代码.
                if (!String.IsNullOrEmpty(accessDetailCode))
                {
                    query = query.Where(p => p.DetailCode == accessDetailCode);
                }


                // 指定了开始时间.
                if (startDate != null)
                {
                    query = query.Where(p => p.AccessTime >= startDate.Value);
                }

                // 指定了结束时间.
                if (finishDate != null)
                {
                    query = query.Where(p => p.AccessTime < finishDate.Value.AddDays(1));
                }


                // 指定了 特定的用户.
                if (userID != null)
                {
                    query = query.Where(p => p.UserID == userID.Value);
                }

                var resultList = query.ToList();

                return(resultList);
            }
        }
        /// <summary>
        /// 更新访问类型汇总.
        /// </summary>
        /// <param name="context"></param>
        /// <param name="accessTypeCode"></param>
        private void UpdateAccessTypeSummary(MyAccessStatisticsContext context, string accessTypeCode)
        {
            AccessTypeSummary data = context.AccessTypeSummarys.Find(accessTypeCode, DateTime.Today);

            if (data == null)
            {
                // 当日数据不存在, 则新增.
                data = new AccessTypeSummary()
                {
                    AccessTypeCode = accessTypeCode,
                    AccessDate     = DateTime.Today,
                    AccessCount    = 1,
                };

                context.AccessTypeSummarys.Add(data);
            }
            else
            {
                // 当日数据已存在. 简单 访问次数递增.
                data.AccessCount++;
            }
        }
        public bool NewAccess(string accessTypeCode, string accessDetailCode, bool isSaveDetailLog, long?userID, ref string resultMsg)
        {
            using (MyAccessStatisticsContext context = new MyAccessStatisticsContext())
            {
                // 先检查 访问类型代码是否存在.
                AccessType accessType = context.AccessTypes.Find(accessTypeCode);
                if (accessType == null)
                {
                    // 未知的分类
                    resultMsg = "未知的访问类型!";
                    return(false);
                }



                // 更新访问类型明细.
                this.UpdateAccessDetail(context, accessTypeCode, accessDetailCode);


                // 更新访问类型汇总
                this.UpdateAccessTypeSummary(context, accessTypeCode);

                // 更新访问类型明细汇总.
                this.UpdateAccessDetailSummary(context, accessTypeCode, accessDetailCode);


                if (isSaveDetailLog)
                {
                    // 新增访问类型明细日志
                    this.NewAccessDetailLog(context, accessTypeCode, accessDetailCode, userID);
                }


                context.SaveChanges();

                resultMsg = "success";
                return(true);
            }
        }
Пример #7
0
        static void Main(string[] args)
        {
            // 当 Code First 与数据库结构不一致时
            // 自动升级到最新的版本.
            Database.SetInitializer(new MigrateDatabaseToLatestVersion <MyAccessStatisticsContext, MyAccessStatistics.Migrations.Configuration>());



            using (MyAccessStatisticsContext context = new MyAccessStatisticsContext())
            {
                var query =
                    from data in context.AccessTypes
                    select data;

                foreach (var item in query)
                {
                    Console.WriteLine(item.AccessTypeCode);
                }
            }

            Console.WriteLine("Finish!");
            Console.ReadLine();
        }