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