【问题标题】:LinqToSQL and the exception " ExecuteReader requires an open and available Connection."LinqToSQL 和异常“ExecuteReader 需要打开且可用的连接”。
【发布时间】:2009-01-13 23:23:45
【问题描述】:

我有一个名为 dbUsers 的 IQueryable 类型的集合

这些是从 linqtosql 数据库上下文中提取的,即

IQueryable<Data.LinqToSQL.User> dbUsers = DBContext.Users

在这个对象上调用 ToList:

IList<Data.LinqToSQL.User> users = dbUsers.ToList();

导致异常:

ExecuteReader 需要一个打开且可用的连接。连接的当前状态为正在连接。

我在这里做错了什么?

干杯

【问题讨论】:

  • 你是在创建 DbContext 类的对象吗??
  • 是的。该错误似乎并不总是发生。我确实有其他代码与 DBContext.Users 交谈,这可能会导致问题

标签: linq-to-sql exception executereader


【解决方案1】:

看看这是否适合你:

IList<Data.LinqToSQL.User> users = (from u in DBContext.Users select u).ToList();

如果不是,您可能需要执行以下操作:

DBContext context = new DBContext();
IList<Data.LinqToSQL.User> users = (from u in context.Users select u).ToList();

【讨论】:

  • 这两个例子有什么区别?这是否会导致数据库连接以不同方式关闭?
【解决方案2】:

我认为这是 DataContext 的线程问题。我遇到了类似的问题。详情请查看this question

另外还有read thisthis

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多