gpt4 book ai didi

c# - 如何减少 EF5 中大型数据集的内存占用?

转载 作者:太空狗 更新时间:2023-10-29 20:01:18 25 4
gpt4 key购买 nike

我正在尝试从 SQL Server 中提取一个大型数据集(140 万条记录)并转储到 WinForms 应用程序中的文件中。我试图通过分页来做到这一点,这样我就不会一次在内存中持有太多,但是这个过程在运行时会继续增加它的内存占用。通过大约 25%,它占用了 600,000K。我在做分页错误吗?我能否就如何防止内存使用量增长如此之快获得一些建议?

var query = (from organizations in ctxObj.Organizations
where organizations.org_type_cd == 1
orderby organizations.org_ID
select organizations);
int recordCount = query.Count();
int skipTo = 0;
int take = 1000;
if (recordCount > 0)
{
while (skipTo < recordCount)
{
if (skipTo + take > recordCount)
take = recordCount - skipTo;

foreach (Organization o in query.Skip(skipTo).Take(take))
{
writeRecord(o);
}
skipTo += take;
}
}

最佳答案

对象上下文将保留在内存中的对象上,直到它被释放。我建议在每批之后处理上下文,以防止内存占用量继续增长。

您还可以使用 AsNoTracking() ( http://msdn.microsoft.com/en-us/library/gg679352(v=vs.103).aspx ),因为您没有保存回数据库。

关于c# - 如何减少 EF5 中大型数据集的内存占用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19817561/

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