private Guid PopulateIdentification(string identityField, RecordMap recordMap) { var id = Guid.NewGuid(); recordMap.Add(identityField, id.ToTableRecordValueString()); return(id); }
private async Task <Guid> GenerateRecordAsync(RecordMap recordMap) { foreach (var field in table.Fields) { var value = field.GetNewValue(); if (value != null) { recordMap.Add(field.Name, value); } await log.WriteLineAsync($"{table.Name}: field '{field.Name}' generated value = {value}"); } await log.WriteLineAsync(); return(await DatabaseContext.Instance.CreateRecordAsync(table.Name, table.IdentityField, recordMap)); }
private async Task <Guid> ProcessTableRecord() { var recordMap = new RecordMap(); if (table.Dependencies.Count > 0) { foreach (var dependency in table.Dependencies) { var dependencyValue = await new DependencyContentGenerator(dependency, log).StartAsync(); if (dependencyValue != null) { recordMap.Add(dependency.TargetIdentityFieldName, dependencyValue); } } } return(await GenerateRecordAsync(recordMap)); }
public override void OnActionExecuting(ActionExecutingContext filterContext) { HttpContextBase httpContextBase = filterContext.HttpContext; HttpRequestBase request = httpContextBase.Request; HttpResponseBase response = httpContextBase.Response; string operKey = request.UserHostAddress + request.Path.ToLower(); OperRecord operRecord = null; lock (RecordMap) { if (RecordMap.ContainsKey(operKey)) { operRecord = RecordMap[operKey]; long totalMilliseconds = Convert.ToInt64((DateTime.Now - operRecord.LastOperDate).TotalMilliseconds); int count = Convert.ToInt32((totalMilliseconds - totalMilliseconds % ClearMillisecond) / ClearMillisecond); operRecord.Count = operRecord.Count > count ? operRecord.Count - count : 0; } else { RecordMap.Add(operKey, operRecord = new OperRecord { Count = 1, OperKey = operKey, LastOperDate = DateTime.Now }); } } if (operRecord.Count >= CountLimit) { response.ContentEncoding = Encoding.UTF8; response.ContentType = "application/json;charset=UTF-8"; response.StatusCode = 200; response.Write(JsonConvert.SerializeObject(new Result { code = -1, msg = "操作过于频繁、请稍后重试!", })); filterContext.Result = new EmptyResult(); } else { lock (RecordMap) { operRecord.Count++; operRecord.LastOperDate = DateTime.Now; } base.OnActionExecuting(filterContext); } if ((DateTime.Now - LastClearDate).TotalSeconds > 60) { lock (RecordMap) { long sumMillisecond = ClearMillisecond * CountLimit; foreach (string tkey in new HashSet <string>(RecordMap.Keys)) { if (tkey.EndsWith(request.Path)) { operRecord = RecordMap[tkey]; long totalMilliseconds = Convert.ToInt64((DateTime.Now - operRecord.LastOperDate).TotalMilliseconds); if (totalMilliseconds >= sumMillisecond) { RecordMap.Remove(tkey); } } } } LastClearDate = DateTime.Now; } }
public override void OnActionExecuting(ActionExecutingContext filterContext) { HttpContextBase httpContextBase = filterContext.HttpContext; HttpRequestBase request = httpContextBase.Request; string key = request.UserHostAddress + request.Path.ToLower(); bool temp = true; lock (RecordMap) { if (RecordMap.ContainsKey(key)) { temp = (DateTime.Now - RecordMap[key]).TotalMilliseconds > IntervalMillisecond; } else { RecordMap.Add(key, DateTime.Now); } } if (temp) { lock (RecordMap) { if (RecordMap.ContainsKey(key)) { RecordMap[key] = DateTime.Now; } else { RecordMap.Add(key, DateTime.Now); } } base.OnActionExecuting(filterContext); } else { HttpResponseBase response = httpContextBase.Response; response.ContentEncoding = Encoding.UTF8; response.ContentType = "application/json;charset=UTF-8"; response.StatusCode = 200; response.Write(JsonConvert.SerializeObject(new Result { code = -1, msg = "操作过于频繁、请稍后重试!", })); filterContext.Result = new EmptyResult(); } if ((DateTime.Now - LastClearDate).TotalSeconds > 60) { lock (RecordMap) { foreach (string tkey in new HashSet <string>(RecordMap.Keys)) { if (tkey.EndsWith(request.Path) && RecordMap.ContainsKey(tkey) && (DateTime.Now - RecordMap[tkey]).TotalMilliseconds > IntervalMillisecond) { RecordMap.Remove(tkey); } } } LastClearDate = DateTime.Now; } }