华-fu 2022-01-26 09:53 采纳率: 66.7%
浏览 64
已结题

C#MVC 使用EF来循环执行SQL UPDATE更新语句偶尔出现数据未被更新问题

在使用C#MVC中的EF执行SQL UPDATE语句,偶尔出现有些数据未被更新,但是日志记录的更新语句和返回值都是正常的。

比如八条数据请求过来,日志记录执行的SQL为八条,且success记录的返回也是成功了八条,但是偶尔出现只有七条被更新,一条未被更新的情况。

更新代码如下
using (var db = dbcontext.GetContext())
                    {
                        string sql = "";
                        int success = 0;
                        string BatchNo;
                        string orderid;
                        foreach (var item in list)  //遍历数据写入数据库
                        {
                            BatchNo= Convert.ToString(item.BatchNo);
                            orderid = Convert.ToString(item.orderid);
                            sql = "select count(*) from mytable where orderid = '{0}'";
                            sql = string.Format(sql, item.orderid);
                            int y = db.Database.SqlQuery<int>(sql).FirstOrDefault();
                            if (y == 0)
                            {
                                sql = "update mytable set Orderid = '{0}',Isach='{1}' where BatchNo= '{2}'"; 
                                sql = string.Format(sql, orderid, 1, BatchNo);
                                success += db.Database.ExecuteSqlCommand(sql);
                                db.SaveChanges();
                                orderid = "";
                                logger.Info(sql);//记录执行的sql到日志
                            }
                            FGMPBatchNo = "";

                        }
                        logger.Info("请求数据为:" + data + "请求结果为:成功" + success + "条,失败:" + (list.Count - success) + "条");
                        
                        if (success == list.Count)
                        {
                            return GetSuccessMessage("记录数据成功");
                        }
                        else
                        {
                            return GetErrorMessage("成功记录:" + success + "条,失败:" + (list.Count - success) + "条");
                        }
                    }

使用日志记录了每条SQL语句,并记录了每次请求记录成功条数success,也查了数据库,该条件的数据的确是存在的,但是数据库该条数据未被更新。
望能解答疑问,感谢
  • 写回答

1条回答

      报告相同问题?

      相关推荐 更多相似问题

      问题事件

      • 系统已结题 3月11日
      • 已采纳回答 3月3日
      • 修改了问题 1月26日
      • 创建了问题 1月26日

      悬赏问题

      • ¥15 使用DWY100k数据集对UEA进行测试,出现报错:IndexError: index 125000 is out of bounds for axis 0 with size 95500
      • ¥15 前端vue实现根据图片url生成pdf文件
      • ¥15 RfidReader资源Q个
      • ¥20 user-agent是否是唯一的,有没有可能相同
      • ¥15 关于#开会#的问题,如何解决?(语言-c++)
      • ¥15 关于#二十四点问题#的问题
      • ¥15 运行kitex的demon出错(求大家解决)
      • ¥15 开发一个类似 typora 这样的软件需要多少钱?
      • ¥15 clearcase7.0安装包
      • ¥15 断点回归模型月度核密度检验不连续