/// <summary> /// 批量更新 /// </summary> /// <param name="p"></param> /// <param name="db"></param> private void Update(Student2 p, SqlSugarClient db) { db.UpdateRange(StudentListUpd); var list = db.Queryable<Student>().ToList(); db.SqlBulkReplace(StudentListUpd2); list = db.Queryable<Student>().ToList(); }
/// <summary> /// 批量更新 /// </summary> /// <param name="p"></param> /// <param name="db"></param> private void Update(Student2 p, SqlSugarClient db) { db.UpdateRange(StudentListUpd); var list = db.Queryable <Student>().ToList(); db.SqlBulkReplace(StudentListUpd2); list = db.Queryable <Student>().ToList(); }
private static void SqlSugar(int eachCount) { GC.Collect(); //回收资源 System.Threading.Thread.Sleep(2000); //休息2秒 PerHelper.Execute(eachCount, "SqlSugar", () => { using (SqlSugarClient conn = new SqlSugarClient(PubConst.connectionString)) { var list = conn.SqlBulkReplace(GetList); } }); }
public bool SqlBulkReplace <T>(List <T> entities) where T : class { return(_db.SqlBulkReplace(entities)); }
//批量修改扣量数据的发送状态,有失败和成功 private void ChangeBuckleSendState(List <Sev_SendDateDetail> BuckleSendList) { List <Sev_FinalSendDetail> DealedList = new List <Sev_FinalSendDetail>(); Dictionary <string, List <Sev_FinalSendDetail> > dic = new Dictionary <string, List <Sev_FinalSendDetail> >();//新建字典类,判断发送批次<key:F_SendId;value:EntityList> try { for (int i = 0; i < BuckleSendList.Count; i++) { if (!dic.ContainsKey(BuckleSendList[i].SMC_F_Id)) //添加键值对 { dic.Add(BuckleSendList[i].SMC_F_Id, new List <Sev_FinalSendDetail>()); //添加新的键 Sev_FinalSendDetail senditem = new Sev_FinalSendDetail(); senditem.F_Id = Guid.NewGuid().ToString(); senditem.F_SendId = BuckleSendList[i].F_Id; senditem.F_Level = BuckleSendList[i].F_Level; senditem.F_DealState = 0; //默认未发送 senditem.F_Report = "0"; //默认未收到回复报告 senditem.F_CreateTime = DateTime.Now; senditem.F_Reissue = 0; //初始化补发次数为0; senditem.F_Response = 0; //默认未收到应答 senditem.F_SmsContent = BuckleSendList[i].F_SmsContent; //内容直接复制拆大段表的内容,不需要拆分 senditem.F_IsCashBack = false; senditem.F_SendTime = BuckleSendList[i].F_SendTime; senditem.F_CreatorUserId = BuckleSendList[i].F_CreatorUserId; dic[BuckleSendList[i].F_Id].Add(senditem);//添加Value值 } else {//添加新的元素 Sev_FinalSendDetail senditem = new Sev_FinalSendDetail(); senditem.F_Id = Guid.NewGuid().ToString(); senditem.F_SendId = BuckleSendList[i].F_Id; senditem.F_Level = BuckleSendList[i].F_Level; senditem.F_DealState = 0; //默认未发送 senditem.F_Report = "0"; //默认未收到回复报告 senditem.F_CreateTime = DateTime.Now; senditem.F_Reissue = 0; //初始化补发次数为0; senditem.F_Response = 0; //默认未收到应答 senditem.F_SmsContent = BuckleSendList[i].F_SmsContent; //内容直接复制拆大段表的内容,不需要拆分 senditem.F_SendTime = BuckleSendList[i].F_SendTime; senditem.F_CreatorUserId = BuckleSendList[i].F_CreatorUserId; senditem.F_IsCashBack = false; dic[BuckleSendList[i].SMC_F_Id].Add(senditem); } BuckleSendList[i].F_DealState = 1;//更新状态为已拆分状态 } Parallel.ForEach(dic, item => { decimal SuccessRate = (decimal)GetSendRate(item.Key) / 100;; //成功率 decimal SendFalseNum = Math.Floor(item.Value.Count() * (1 - SuccessRate)); //计算发送的失败条数,向下取整数 Random radom = new Random(); List <int> RadomList = new List <int>(); //随机数列 for (int x = 0; x < SendFalseNum; x++) //获取不重复的随机数 { int RadomNum = radom.Next(0, item.Value.Count() - 1); if (!RadomList.Contains(RadomNum)) //集合list不包含num,就把num添加进list。这样保证随机数不重复 { RadomList.Add(RadomNum); } else { x--; } } for (int i = 0; i < item.Value.Count(); i++) { if (RadomList.Contains(i)) //在随机数列中,判断为发送失败 { item.Value[i].F_Report = "2"; //失败报告 item.Value[i].F_Response = 2; //已收到应答 item.Value[i].F_DealState = 2; //已处理已发送,已经收到应答,失败 } else { item.Value[i].F_Report = "3"; //成功报告,区别于正常的成功。前台1,3都是成功,但是1是正常的3是扣量的 item.Value[i].F_Response = 2; //已收到应答 item.Value[i].F_DealState = 2; //已处理已发送,已经收到应答,成功 } using (SqlSugarClient db = new SqlSugarClient(connStr)) //开启数据库连接 { db.Insert(item.Value); //单个插入,客户要求 } } }); using (SqlSugarClient db = new SqlSugarClient(connStr)) //开启数据库连接 { db.SqlBulkReplace(BuckleSendList); //单个插入,客户要求 } } catch (Exception ex) { LogHelper.WriteLog("发送任务扣量方法出现异常:" + ex); } }
private static void SqlSugar(int eachCount) { GC.Collect();//回收资源 System.Threading.Thread.Sleep(2000);//休息2秒 PerHelper.Execute(eachCount, "SqlSugar", () => { using (SqlSugarClient conn = new SqlSugarClient(PubConst.connectionString)) { var list = conn.SqlBulkReplace(GetList); } }); }