gpt4 book ai didi

c# - Entity Framework ——幕后 : DataReaders and connection life period

转载 作者:行者123 更新时间:2023-11-29 04:56:05 28 4
gpt4 key购买 nike

关于 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 基于 DataReader 以获得最大效率,因此基于该假设,我认为在上述情况下,数据库连接将保持打开状态,直到我完成对结果的迭代,这将是一个非常很长时间(就代码而言),这显然是我不想要的。

有没有一种方法可以像我使用普通的旧 ADO.NET DataAdapter、DataSet 和 fill() 方法而不是使用 DataReader 那样获取全部数据?

或者我的假设离题太远了?

无论如何,我都希望有人指出一个很好的来源来解释这一点(如果有的话)。

谢谢,

米奇

最佳答案

如果您想预先获取所有数据,类似于Fill(),您需要强制执行查询。

var activeSources = from e in entitiesContext.Sources
where e.IsActive
select e;

var results = activeSources.ToList();

调用 ToList() 后,您将获得数据并与数据库断开连接。

关于c# - Entity Framework ——幕后 : DataReaders and connection life period,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6535291/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com