C# 带有SQLite错误的实体框架:从存储提供程序读取时出错';s数据读取器

C# 带有SQLite错误的实体框架:从存储提供程序读取时出错';s数据读取器,c#,wpf,entity-framework,sqlite,.net-4.5,C#,Wpf,Entity Framework,Sqlite,.net 4.5,我在C#中的WPF应用程序中使用SQLite 1.0.89和VS2013上的EF 5.NET Framework 4.5。 数据库大小不大,程序使用的表最多包含1000行 使用该程序时,我经常发现此错误: 从存储提供程序的数据读取器读取时出错。 有关详细信息,请参见内部异常 内部例外是: {“库例程调用顺序错误\r\n不是错误”} 其他时间,内部异常为: 连接已关闭,语句已终止 另一次我发现: 未知错误\r\n没有可用的连接句柄 我在搜索时发现这篇文章: 但没人能解决我的问题 程序执行的查询

我在C#中的WPF应用程序中使用SQLite 1.0.89和VS2013上的EF 5.NET Framework 4.5。 数据库大小不大,程序使用的表最多包含1000行

使用该程序时,我经常发现此错误:

从存储提供程序的数据读取器读取时出错。 有关详细信息,请参见内部异常

内部例外是:

{“库例程调用顺序错误\r\n不是错误”}

其他时间,内部异常为:

连接已关闭,语句已终止

另一次我发现:

未知错误\r\n没有可用的连接句柄

我在搜索时发现这篇文章:

但没人能解决我的问题

程序执行的查询不在循环内,而是在UI上按下按钮时执行的单个查询,但我注意到,当我更快地按下查询按钮时,错误发生的频率更高(不仅仅是bun)

另外一件事。当通过方法示例的properties istead访问DB上下文时,错误发生的频率更高(但也不仅仅如此):

public List<Product> ProductList
{
get {
      return DBContext.Products.ToList();
    }
}
公共列表产品列表
{
得到{
返回DBContext.Products.ToList();
}
}

问题是由多个线程使用相同的DBContext查询数据库引起的

为每个线程使用不同的DBContext可以解决这个问题

在我的例子中,我使用Castle Windsor将DBContext注入到执行查询的类中。
将DBContext的生活方式配置为每个线程一个问题已经解决。

我在EF6.1中遇到了这个错误,我花了一段时间才弄清楚到底发生了什么。简化了查询,并且成功了,所以我认为查询中一定发生了什么。发现我正在查询一个字符串并传递一个int的比较。一旦我更改了int.toString,一切都正常了

Dim OpenOrder=(来自context.CP\u Carthead中的p,其中p.SessionID=
MySessionInfo.Current.LeadID.ToString和p.CustomerID=LeadID
p.Deleted=False,p.PortalID=
OrderBy(函数(p)p.OrderID).FirstOrDefault
OrderID=OpenOrder.OrderID

LeadID(我的会话)是一个int。如果没有.ToString,我会在上面的帖子中得到错误