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
相关文章
|
3月前
|
Java 测试技术 API
【JUC】(1)带你重新认识进程与线程!!让你深层次了解线程运行的睡眠与打断!!
JUC是什么?你可以说它就是研究Java方面的并发过程。本篇是JUC专栏的第一章!带你了解并行与并发、线程与程序、线程的启动与休眠、打断和等待!全是干货!快快快!
641 2
|
安全 Java 数据库
一天十道Java面试题----第四天(线程池复用的原理------>spring事务的实现方式原理以及隔离级别)
这篇文章是关于Java面试题的笔记,涵盖了线程池复用原理、Spring框架基础、AOP和IOC概念、Bean生命周期和作用域、单例Bean的线程安全性、Spring中使用的设计模式、以及Spring事务的实现方式和隔离级别等知识点。
|
编解码 网络协议 API
Netty运行原理问题之Netty的主次Reactor多线程模型工作的问题如何解决
Netty运行原理问题之Netty的主次Reactor多线程模型工作的问题如何解决
144 1
|
Java Spring
运行@Async注解的方法的线程池
自定义@Async注解线程池
536 3
|
消息中间件 设计模式 安全
多线程魔法:揭秘一个JVM中如何同时运行多个消费者
【8月更文挑战第22天】在Java虚拟机(JVM)中探索多消费者模式,此模式解耦生产与消费过程,提升系统性能。通过`ExecutorService`和`BlockingQueue`构建含2个生产者及4个消费者的系统,实现实时消息处理。多消费者模式虽增强处理能力,但也引入线程安全与资源竞争等挑战,需谨慎设计以确保高效稳定运行。
217 2
|
SQL 存储 监控
SQLServer事务复制延迟优化之并行(多线程)复制
【9月更文挑战第12天】在SQL Server中,事务复制延迟会影响数据同步性。并行复制可通过多线程处理优化这一问题,提高复制效率。主要优化方法包括:配置分发代理参数、优化网络带宽、调整系统资源、优化数据库设计及定期监控维护。合理实施这些措施可提升数据同步的及时性和可靠性。
513 0
|
安全 开发者
LabVIEW程序退出后线程仍在运行问题
LabVIEW程序退出后线程仍在运行问题
353 2
|
Java 程序员
Java多线程编程是指在一个进程中创建并运行多个线程,每个线程执行不同的任务,并行地工作,以达到提高效率的目的
【6月更文挑战第18天】Java多线程提升效率,通过synchronized关键字、Lock接口和原子变量实现同步互斥。synchronized控制共享资源访问,基于对象内置锁。Lock接口提供更灵活的锁管理,需手动解锁。原子变量类(如AtomicInteger)支持无锁的原子操作,减少性能影响。
121 3
|
Dart Serverless Android开发
Flutter 单线程模型保证UI运行流畅
Flutter 单线程模型保证UI运行流畅
398 0