我在VS2015上使用ASP.NET MVC Core 1.1。我想在我的控制器代码的一部分中理解以下内容:以下代码的最后一行给出错误:There is already an open DataReader associated with this Command which must be closed first.
。但是,如果我将SaveChangesAsync()
更改为SaveChanges()
代码可以正常工作。
控制器快照:
public IActionResult myActionMethod(...)
{
...
var oRecToUpdate = _context.Order.Where(c => c.OrdersId == 104).SingleOrDefault();
if (oRecToUpdate != null)
{
oRecToUpdate.Price = 98.09;
_context.SaveChangesAsync();
}
string sStateNumer = _context.StateNames
.Where(s => s.State == "myState").Select(t => t.StateNumber).SingleOrDefault();
....
}
答案 0 :(得分:3)
因为您在上下文中调用异步方法,所以在您进入下一个查询时它可能仍在运行。您需要await
来电以阻止此操作:
await _context.SaveChangesAsync();
或者调用非异步版本:
_context.SaveChanges();