Dapper Query(..):流或加载所有?

时间:2016-05-30 12:35:31

标签: c# orm dapper

它是否加载此代码中的所有记录或使用类似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...
    }
}

1 个答案:

答案 0 :(得分:7)

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