InvalidOperationException:操作已在进行中

时间:2017-02-03 23:11:50

标签: c# asp.net entity-framework razorengine

我使用的是Asp.net核心Razor引擎实体框架。我一直得到上​​面的错误,它从我读过的,它指的是已经用于操作的数据库。我不确定为什么会发生这种情况。是因为它处于foreach循环中吗?解决方法是什么?这是我的代码

[HttpGet]
[Route("currentSession")]
public IActionResult CurrentSession()
{

    var id = HttpContext.Session.GetInt32("Id");
    if(id != null)
    {
        var user = _context.User.FirstOrDefault(x => x.Id == id);
         ViewBag.User = user;
         ViewBag.User_Id = id;
         ViewBag.Auction = _context.Auction.AsEnumerable();
         foreach(var item in ViewBag.Auction)
         {
             if(item.End_Date < DateTime.Now)
             {
                 var seller_id = (int)item.Id_Of_Seller;
                 var seller = _context.User.FirstOrDefault(x => x.Id == seller_id); //this is the line that causes the error in the title
                 var bidder_id = (int)item.Id_Highest_Bid;
                 var buyer = _context.User.FirstOrDefault(x => x.Id == bidder_id); //this line also causes the same error
                 buyer.Wallet -= item.Bid;
                 seller.Wallet += item.Bid;

                _context.Auction.Remove(item);
                _context.SaveChanges();
             }
         }
         return View("Home");
    } 
    return RedirectToAction("LoginPage");
}

2 个答案:

答案 0 :(得分:1)

你能尝试用ToList替换AsEnumerable吗?

         ViewBag.Auction = _context.Auction.ToList();

答案 1 :(得分:1)

我将MultipleActiveResultSets=True添加到我的sql server连接字符串中,这修复了异常。不需要进行其他更改。

这为我修复了异步方法,后台任务和IQueryable循环。