已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭

Posted A·DONG

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭相关的知识,希望对你有一定的参考价值。

在运用Linq to sql 或者 linq to entity等相关linq技术进行数据库访问操作时,如果发生上述异常是因为是因为.NET內部是使用DataReader作数据存取,DataReader用同一个Connection。

解决办法有两个:

1,设定ConnectionString加上MultipleActiveResultSets=true,但只适用于SQL 2005以后的版本
2.先读出放置在List中

例如将

var preObj = (from a in db.ArticleEAP
                          where a.ArticleID < id
                          orderby a.ArticleID descending
                          select new { a.ArticleID, a.ArticleTitle })

  

改为

var preObj = (from a in db.ArticleEAP
                          where a.ArticleID < id
                          orderby a.ArticleID descending
                          select new { a.ArticleID, a.ArticleTitle }).ToList()

  

ToList之后就被读到内存中了,与DataContext脱钩了!

以上是关于已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭的主要内容,如果未能解决你的问题,请参考以下文章

code first提示已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭解决方法

Entity Framework优化一:引发了“System.Data.Entity.Core.EntityCommandExecutionException”类型的异常

POJ 1830 开关问题

开关问题

poj1830(求解xor方程组)

POJ 1830 高斯消元