MVC3"不允许启动新事务,因为有其他线程正在该会话中运行"错误解决方法

简介: 出错代码段: public void UPdateStockForAudit(string ordercode) { var ditems=_db.Orderdetails.

出错代码段:

 public void UPdateStockForAudit(string ordercode)
        {
            var ditems=_db.Orderdetails.Where(o=>o.OrderCode==ordercode);
            foreach (var item in ditems)
            {
                decimal inventory= item.PCS * item.Stock.TonPerPCS;
                UpdateStock(item.StockId, item.PCS,inventory);
            }
        }
        private void UpdateStock(int stockid,int selledpcs,decimal inventory)
        {
            var item=_db.Stocks.SingleOrDefault(s=>s.StockId==stockid);
            item.Selled=selledpcs;
            item.Inventory=inventory;  
_db.SaveChanges(); }

修正后的(关键点在于_db.SaveChanges()把它放在循环外面即可! ):

 public void UPdateStockForAudit(string ordercode)
        {
            var ditems=_db.Orderdetails.Where(o=>o.OrderCode==ordercode);
            foreach (var item in ditems)
            {
                decimal inventory= item.PCS * item.Stock.TonPerPCS;
                UpdateStock(item.StockId, item.PCS,inventory);
            }
            _db.SaveChanges();
        }
        private void UpdateStock(int stockid,int selledpcs,decimal inventory)
        {
            var item=_db.Stocks.SingleOrDefault(s=>s.StockId==stockid);
            item.Selled=selledpcs;
            item.Inventory=inventory;            
        }

不要怀疑事情是否会正常更新,系统很智能测试结果显示很正常!没有出错也没有数据错乱的问题!

学习交流群:364976091
相关文章
|
7月前
|
安全 Java
【JavaSE专栏76】三态和五态,线程的不同状态:新建、运行、状态、阻塞、等待、计时等待状态
【JavaSE专栏76】三态和五态,线程的不同状态:新建、运行、状态、阻塞、等待、计时等待状态
|
8月前
|
Java
多线程学习(三)多线程开发带来的问题与解决方法
多线程学习(三)多线程开发带来的问题与解决方法
77 1
|
7月前
|
SQL Java 数据库连接
联表查询 && 索引 && 事务 && JDBC使用 &&CPU工作原理 && 线程概念 && Thread类的用法
联表查询 && 索引 && 事务 && JDBC使用 &&CPU工作原理 && 线程概念 && Thread类的用法
135 0
|
8月前
|
安全 算法 Java
去某东面试遇到并发编程问题:如何安全地中断一个正在运行的线程
一个位5年的小伙伴去某东面试被一道并发编程的面试题给Pass了,说”如何中断一个正在运行中的线程?,这个问题很多工作2年的都知道,实在是有些遗憾。 今天,我给大家来分享一下我的回答。
65 0
|
18天前
|
监控 安全
线程死循环是多线程应用程序开发过程中一个难以忽视的问题,它源于线程在执行过程中因逻辑错误或不可预见的竞争状态而陷入永久运行的状态,严重影响系统的稳定性和资源利用率。那么,如何精准定位并妥善处理线程死循环现象,并在编码阶段就规避潜在风险呢?谈谈你的看法~
避免线程死循环的关键策略包括使用同步机制(如锁和信号量)、减少共享可变状态、设置超时、利用监控工具、定期代码审查和测试、异常处理及设计简洁线程逻辑。通过这些方法,可降低竞态条件、死锁风险,提升程序稳定性和可靠性。
19 0
|
2月前
|
安全 Java
Java并发编程中的线程安全问题与解决方法
在Java开发中,线程安全是一个至关重要的话题。本文将深入探讨Java并发编程中常见的线程安全问题,并结合实际案例介绍解决这些问题的方法,帮助读者更好地理解和应对多线程环境下的挑战。
40 1
|
2月前
|
Go 调度
|
3月前
|
缓存 安全 Java
Java并发编程中的线程安全性问题与解决方法
【2月更文挑战第6天】在Java并发编程中,线程安全性一直是一个重要的问题。本文将深入探讨Java中线程安全性问题的根源,以及针对这些问题提出的解决方法,包括使用同步关键字、Lock对象、volatile关键字等。通过本文的学习,读者将更好地理解Java并发编程中的线程安全性问题,并能够运用相应的解决方法来保障程序的稳定性和可靠性。
28 4
|
7月前
|
缓存 Java p3c
【Java用法】线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。
【Java用法】线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。
125 0
|
8月前
|
Java
多线程开发带来的问题与解决方法
多线程开发带来的问题与解决方法
55 0