/// <summary> /// 同步主键 /// 当主键表中所存的的值小于对应表中实际最大主键值时 /// 修改主键表中的值为该最大值 /// </summary> /// <returns></returns> public JsonResult SyncPK() { InvokeResult result = new InvokeResult(); List <StorageData> dataList = new List <StorageData>(); var pkCounter = dataOp.FindAll("TablePKCounter").ToList(); var allRules = TableRule.GetAllTables(); var allTempRules = allRules.Select(i => new { tbName = i.Name, key = i.GetPrimaryKey() }).ToList(); foreach (var counter in pkCounter) { var tbName = counter.Text("tbName"); var curMax = counter.Int("count");//当前主键表所存主键值 int factMax = 0; var rule = allTempRules.Where(i => i.tbName == tbName).FirstOrDefault(); string key = string.Empty; if (rule != null) { key = rule.key ?? string.Empty; } string current = string.Empty; if (!string.IsNullOrWhiteSpace(key)) { var allDatas = dataOp.FindAll(tbName).SetFields(key).ToList(); if (allDatas.Count > 0) { factMax = allDatas.Max(i => i.Int(key)); if (curMax < factMax) { StorageData data = new StorageData(); data.Name = "TablePKCounter"; data.Query = Query.And(Query.EQ("tbName", tbName), Query.EQ("count", curMax.ToString())); data.Type = StorageType.Update; data.Document = new BsonDocument().Add("count", factMax.ToString()); dataList.Add(data); } } } } result = dataOp.BatchSaveStorageData(dataList); return(Json(TypeConvert.InvokeResultToPageJson(result))); }