我需要从数据库返回大约 50 万行(请不要问为什么)。
然后我需要将这些结果保存为 XML(更多 URGH)并将此文件 ftp 到某个神奇的地方。
我还需要转换结果集中的每一行。
现在,这就是我正在做的事情 say .. TOP 100
结果:
- 使用 Dapper 的
Query<T>
方法,将整个结果集扔进内存 - 然后我使用 AutoMapper 将数据库 POCO 转换为我的 FileResult POCO
- 转换为 XML
- 然后将这个集合保存到文件系统
- 然后是 FTP
这适用于 100 行,但在尝试将 500K 结果转换为新集合时,AutoMapper 出现内存不足异常。
所以,我想知道我是否可以这样做......
- 使用 Dapper 从数据库流式传输数据
- 对于每一行,自动映射它
- 转换为 XML
- 将结果流式传输到磁盘
- <对每一行重复>
- 现在将该文件 ftp 到 magic-land
我正试图停止将一切 扔进 RAM。我的想法是,如果我可以流式传输内容,内存效率会更高,因为我只处理单个结果数据集。
最佳答案
using Dapper's
Query<T>
method, which throws the entire result set into memory
做得很好,其中一个可选参数是 bool
让你选择是否缓冲;p
只需添加 , buffer: false
您现有的电话 Query<T>
.
关于c# - 可以使用 Dapper 流式传输大型 SQL Server 数据库结果集吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34169362/