C# 带有SQLite错误的实体框架:从存储提供程序读取时出错';s数据读取器
我在C#中的WPF应用程序中使用SQLite 1.0.89和VS2013上的EF 5.NET Framework 4.5。 数据库大小不大,程序使用的表最多包含1000行 使用该程序时,我经常发现此错误: 从存储提供程序的数据读取器读取时出错。 有关详细信息,请参见内部异常 内部例外是: {“库例程调用顺序错误\r\n不是错误”} 其他时间,内部异常为: 连接已关闭,语句已终止 另一次我发现: 未知错误\r\n没有可用的连接句柄 我在搜索时发现这篇文章: 但没人能解决我的问题 程序执行的查询不在循环内,而是在UI上按下按钮时执行的单个查询,但我注意到,当我更快地按下查询按钮时,错误发生的频率更高(不仅仅是bun) 另外一件事。当通过方法示例的properties istead访问DB上下文时,错误发生的频率更高(但也不仅仅如此):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没有可用的连接句柄 我在搜索时发现这篇文章: 但没人能解决我的问题 程序执行的查询
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,我会在上面的帖子中得到错误