繁体   English   中英

带有SQLite错误的实体框架:从商店提供商的数据读取器读取时发生错误

[英]Entity Framework with SQLite Error: An error occurred while reading from the store provider's data reader

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

使用该程序我经常发现这个错误:

从商店提供商的数据阅读器读取时发生错误。 有关详细信息,请参阅内部异常

内在的例外是:

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

其他时间内部异常是:

连接已关闭,声明已终止

我又发现了一次:

未知错误\\ r \\ nno连接句柄可用

我找到这篇文章搜索:

Parallel.Foreach循环创建多个数据库连接会引发连接错误?

SQL Server CE数据库大小问题

但没有人解决我的问题。

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

其他的事情。 当DB Context通过属性访问而不是方法示例时,错误更频繁地发生(但不仅仅是)

public List<Product> ProductList
{
get {
      return DBContext.Products.ToList();
    }
}

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

为每个线程使用不同的DBContext解决问题。

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

我在EF6.1中发生了这个错误,并花了一些时间来弄清楚发生了什么。 简化了查询,并且它有效,所以我想在查询中必须要进行一些操作。 发现我正在查询字符串并在int上传递比较。 一旦我改变了int.toString就行了。

Dim OpenOrder = (From p In context.CP_Carthead Where p.SessionID = MySessionInfo.Current.LeadID.ToString And p.CustomerID = LeadID And p.Deleted = False And p.PortalID = TenantID).OrderBy(Function(p) p.OrderID).FirstOrDefault OrderID = OpenOrder.OrderID

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM