Esempio n. 1
1
 /// <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();
 }
Esempio n. 2
0
        /// <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();
        }
Esempio n. 3
0
        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));
 }
Esempio n. 5
0
        //批量修改扣量数据的发送状态,有失败和成功
        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); }
        }
Esempio n. 6
0
        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);
                }
            });
        }