首页 > 解决方案 > 使用流的高内存使用解决方案

问题描述

我有一个关于 C# 中如何解决高内存使用问题的问题。

假设我在数据库中有很多项目数据。我想阅读所有内容,然后将该数据写入单独的文件并将其存档到 zip 文件中。如果我一次从数据库中获取所有项目数据,应用程序将超时,因为所有内存都已使用。
我们在 node js 应用程序中所做的工作是找到一个方便的库并使用 AsyncEnumerable 并将项目数据以较小的片段流式传输到写入流。
所以我的问题是它是如何在 C# 中完成的?因为我还没有找到如何通过实体框架流式传输数据的选项?它是如何解决的,任何人都可以提供一些可以使用的代码片段/示例,是 IQueryable 还是其他?我对当时如何从 10000 个元素的流中读取数据感兴趣。

标签: c#sql-serverentity-frameworkasp.net-core.net-core

解决方案


默认情况下,数据在 EF 中流式传输,您无需执行任何操作。它ToList()和朋友将整个响应存储在内存中,如果您仅枚举可查询对象,它将处理枚举器中的任何流。


推荐阅读