【发布时间】:2011-06-30 13:13:32
【问题描述】:
关于 EF 的另一个问题:
我想知道在迭代查询结果时幕后发生了什么。
例如,查看以下代码:
var activeSources = from e in entitiesContext.Sources
where e.IsActive
select e;
然后:
foreach (Source currSource in allSources)
{
code based on the current source...
}
重要提示:每次迭代都需要一段时间才能完成(从 1 到 25 秒)。
现在,我假设 EF 基于 DataReaders 以获得最大效率,因此基于该假设,我认为在上述情况下,数据库连接将保持打开状态,直到我完成对结果的迭代,这将是一个非常很长一段时间(就代码而言),这显然是我不想要的。
有没有办法像使用普通的旧 ADO.NET DataAdapters、DataSet 和 fill() 方法而不是使用 DataReaders 那样获取整个数据?
或者我的假设可能与我的假设相去甚远?
在任何情况下,我都希望能找到一个很好的来源来解释这一点(如果有的话)。
谢谢,
米奇
【问题讨论】:
-
"ToList
(IEnumerable ) 方法强制立即查询评估并返回包含查询结果的 List 。您可以将此方法附加到查询中以获得查询结果的缓存副本。” -
谢谢,不胜感激:)
标签: c# .net mysql entity-framework datareader