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


出错代码段:

 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;            
        }

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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM