[英]An already open DataReader for the ADO.NET Entity model in ASP.NET MVC project
我将ADO.NET实体模型用于ASP.NET MVC 4 Razor项目的数据绑定和其他数据处理。
我正在我的模型中尝试在Controller
像这样绑定数据:
当我到达第26行时:
26. Sender = db.GetLoginByUserId(item.sender_id).FirstOrDefault(),
27. Receiver = db.GetLoginByUserId(item.recv_id).FirstOrDefault(),
我收到这样的错误:
{“已经有与此连接关联的打开的DataReader,必须首先关闭它。”}
真的,我不知道如何手动关闭它,因为ADO.NET实体太自动了,而且我也没有定义DataReader或连接的任何打开都在关闭。
我认为这可能是由于第15行:
15. var currentUserId = db.GetUserIdByLogin(Request.Cookies["user-name"].Value);
当GC收集垃圾时,实体模型确实会打开连接/ DataReader并仅在大括号}
之后删除它们。
看起来我只能在一个方法中进行一次调用,但是如果我想从实体模型中进行更多调用,该怎么办?
谢谢!
您现在是否处于foreach循环中? 这是导致这种情况的常用方法-在循环内执行n + 1(每个项目的查询)时在第一个阅读器上进行遍历。 通常的解决方法是(以下一项):
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.