具有流的高内存使用率解决方案



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

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

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

最新更新