它是否加载此代码中的所有记录或使用类似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...
}
}
答案 0 :(得分:7)
支持这两个选项。默认情况下,数据被缓冲到List<T>
,因为大多数查询都相当小,并且避免了多个记录集&#34;局限性。要在没有额外分配的情况下获取基础列表,请使用提供的.AsList()
扩展方法。但是,如果您需要无缓冲数据:传递buffered: false
。这将为您提供一个包装原始IDataReader
的枚举器 - 适用于大量查询。