![](/img/trans.png)
[英]Entity Framework Return error - data reader returned by the store data provider does not have enough columns
[英]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循环创建多个数据库连接会引发连接错误?
但没有人解决我的问题。
程序执行的查询不在循环内,但是当在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.