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); } }
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); } }
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(); }