Dapper Query(..):流式传输还是全部加载?
Posted
技术标签:
【中文标题】Dapper Query(..):流式传输还是全部加载?【英文标题】:Dapper Query(..): stream or loads all? 【发布时间】:2016-05-30 12:35:31 【问题描述】:它是加载这段代码中的所有记录还是使用 SqlDataReader 之类的东西?
using (var c = new SqlConnection(_options.TargetConnectionString))
c.Open();
foreach(var record in c.Query("select * from Users")) // suppose N+1 records
// all records loaded or read one by one here?
// some work here...
【问题讨论】:
考虑使用 SQL Server Profiler 对此进行调查。但似乎所有记录都加载到您的案例中。 【参考方案1】:这两个选项都受支持。默认情况下,数据被缓冲到List<T>
,因为大多数查询都相当小,并且避免了“多个记录集”的限制。要在不进行额外分配的情况下获取基础列表,请使用提供的 .AsList()
扩展方法。但是,如果您想要无缓冲数据:传递 buffered: false
。这将为您提供一个包含原始 IDataReader
的枚举器 - 适用于大型查询。
【讨论】:
我明白了。 ***.com/questions/13026558/… 的另一个好答案 @Artyom 我不相信那个人——他是个十足的混蛋 是的)他的回答更详细)以上是关于Dapper Query(..):流式传输还是全部加载?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以使用 JPA 从 javax.persistence.Query.getResultList() 流式传输结果?
流式传输到 BigQuery 表的数据何时可用于 Query 操作?
将数据流从 Google Cloud Storage 流式传输到 Big Query