c# - 使用流的高内存使用解决方案
问题描述
我有一个关于 C# 中如何解决高内存使用问题的问题。
假设我在数据库中有很多项目数据。我想阅读所有内容,然后将该数据写入单独的文件并将其存档到 zip 文件中。如果我一次从数据库中获取所有项目数据,应用程序将超时,因为所有内存都已使用。
我们在 node js 应用程序中所做的工作是找到一个方便的库并使用 AsyncEnumerable 并将项目数据以较小的片段流式传输到写入流。
所以我的问题是它是如何在 C# 中完成的?因为我还没有找到如何通过实体框架流式传输数据的选项?它是如何解决的,任何人都可以提供一些可以使用的代码片段/示例,是 IQueryable 还是其他?我对当时如何从 10000 个元素的流中读取数据感兴趣。
解决方案
默认情况下,数据在 EF 中流式传输,您无需执行任何操作。它ToList()
和朋友将整个响应存储在内存中,如果您仅枚举可查询对象,它将处理枚举器中的任何流。
推荐阅读
- jquery - div高度不同时的过渡速度不一致
- sql - 如何将 sql 查询输出中的值从 1 转换为 yes
- sparql - Sparql:结合删除和描述
- solr - 我如何在 apache solr 中的一组结果上执行/使用中位数?
- vue.js - V-Expansion-Panel 刷新内容
- mysql - 需要获取 MAX(来自 current_ts 列的最新日期)并与我的查询集成
- python - 如何在 scikit 学习管道中包含标签编码?
- python - Plotly:刻度标签范围 - 隐藏带有负值的刻度
- c# - 当我更新显示打开按钮而不是更新按钮的新版本 Google Play 商店时
- kubernetes - 解决错误不能为非函数 hasKey 提供参数