我从数据库中检索了两个实体列表,它们使用相同的上下文和相同的连接字符串。当我从上下文中获取它们时,它们具有导航属性并且这些属性很好,即IQueryable<EntityA> A = context.EntityA.Include("V"), IQueryable<EntityB> B = context.EntityB.Include("V")
有一个嵌套循环,即
foreach(EntityA a in A) {
foreach (EntityB b in B) {
if (b.V.property == a.V.property) {
// do something
}
}
}
当它在此循环中到达EntityB时,抛出了一个已经打开的datareader异常。我理解为什么会这样,因为他们共享相同的连接字符串和conetext但是我不确定解决方案是什么。 谢谢
答案 0 :(得分:0)
我不确定你的数据访问模式是什么(存储库模式等...)但我会尝试在“foreach”循环之前迭代某处并从内存迭代循环。您可以使用简单的ToList()
而非循环IQueryable<T>
您可以直接查询列表或将IQueryable带入的任何地方,只需在最后添加到列表中。多数民众赞成我可以建议,直到我看到更多的代码。