[英]Entity Framework - behind the scenes: DataReaders and connection life period
关于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、DataSets 和 fill() 方法而不是使用 DataReaders 那样来获取整个数据?
或者,也许我的假设与我的假设相去甚远?
无论如何,如果有的话,我很乐意被指出一个很好的来源来解释这一点。
谢谢,
米奇
如果您想预先获取所有数据,类似于Fill()
,您需要强制执行查询。
var activeSources = from e in entitiesContext.Sources
where e.IsActive
select e;
var results = activeSources.ToList();
调用ToList()
后,您将获得数据并与数据库断开连接。
如果您想一次返回所有结果,请使用.ToList(); 然后不会发生延迟执行。
var activeSources = (from e in entitiesContext.Sources
where e.IsActive
select e).ToList();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.