LINQ To SQL错误“已经有一个与此命令关联的打开DataReader”

时间:2010-03-12 12:31:59

标签: linq-to-sql

  

已经有一个与此命令关联的开放DataReader

从DataContext对象检索数据时出现此错误。

如何解决这个问题?

4 个答案:

答案 0 :(得分:5)

确保您没有将DataContext声明为static。在每次使用时创建和销毁DataContext。

public MyDataClass{

    CustomerDataContext db;

    public void MyDataClass()
    {
       db = new CustomerDataContext();
    }

    public Customer GetCustomer(int id)
    {
       return db.Customers.SingleOrDefault(c=>c.ID == id);
    }
} 

答案 1 :(得分:1)

查看此帖子

Is mixing ADO.NET and LINQ-TO-SQL bad? My data layer isn't working

它实际上取决于您如何存储,访问和处置datacontext。 尝试使用负载测试工具重现错误。我用jmeter。很多人不知道他们有这个问题,因为他们的流量太少了。

答案 2 :(得分:0)

您忘记关闭DataReader,并在同一连接上再启动一个DataReader。

答案 3 :(得分:0)

帮助我的原因是,将与错误相关联的所有IQueryable类型转换为更多的本机类型,然后在另一个查询中使用它们。