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

将数据从 Oracle Golden Gate 馈送到 Big Query 的最佳方式是啥

GraphQL 流式传输类型?

如何在 Vert.x (java) 中使用 Jackson 流式传输 JSON 结果