EF 已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭
2015-09-23 14:10
666 查看
在以下代码中,当第二次foreach时会抛出该异常,原因是:由于Entity在读取数据的时候使用的是DbDataReader进行读取,当作为IEnumuerable<T>对象MoveNext进行操作时,只是使用DbDataReader进行一次Read操作,因此当查询的结果未完全读取完的时候,数据库连接一直被占用,当再次进行查询操作时便回出现上面的异常。
解决办法有两个:
1.在链接字符串中加入 MultipleActiveResultSets=true,但需要注意的是该方案只适合Sql Server 2005以及以上版本
2.使用ToList()方法,将IQueryable转为List
解决办法有两个:
1.在链接字符串中加入 MultipleActiveResultSets=true,但需要注意的是该方案只适合Sql Server 2005以及以上版本
2.使用ToList()方法,将IQueryable转为List
using (var context = new MyDbContext()) { var blogs = from blog in context.BlogPosts where blog.Comments.Any() select blog; foreach (var blog in blogs) { Console.WriteLine("Blog Post: {0}", blog.Title); foreach (var comment in blog.Comments) { Console.WriteLine("\t{0}", comment.Comments); } } }
相关文章推荐
- 验证stdin和stdout为行缓冲
- CEPH浅析”系列之三——CEPH的设计思想
- LaTeX手动安装宏包(package)以及生成帮助文档的整套流程
- 每天一个linux命令(6):rmdir 命令
- 全面解读python web 程序的9种部署方式
- 驱动开发中使用安全字符串函数
- Android Activity原理以及其子类描述
- HDU 1561
- Activity的启动模式
- PHP Session可能会引起并发问题
- 队列的数组实现
- ASP.NET 数据库页面访问简单工具
- javascript js保留小数位数的方法
- 如何采用不加锁的方式实现线程同步
- 如何采用不加锁的方式实现线程同步
- TSM 修改control path
- IEtester从重要变鸡肋
- sscanf(), sscanf_s()
- BST、B树、B-树、B+树、B*树
- oracle备份还原